zoukankan      html  css  js  c++  java
  • 平衡二叉树

    题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。

    思路分析:常规的办法我们肯定能想到通过调用深度的函数来递归计算出左右子树的深度,并进行判断是否满足平衡因子小于等于1,也就是如下的方法:

     public boolean IsBalanced_Solution(TreeNode root) {
            if(root==null)
                return true;
             int  left = TreeDepth(root.left);
             int  right = TreeDepth(root.right);
             int n = left-right;
             if(n>1||n<-1)
                 return false;
            return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
          
        }
        public int TreeDepth(TreeNode root) {
            if(root==null)
                return 0;
            int left = TreeDepth(root.left);
            int right = TreeDepth(root.right);
             return (left>right)?(left+1):(right+1);   
        }

    但往往这样的话会重复计算一些结点的深度,所以更好的办法是利用自底向上遍历的方法,边遍历边判断是否满足,对代码进行改进:

      private boolean isBalanced=true;
        public boolean IsBalanced_Solution(TreeNode root) {
             
            TreeDepth(root);
            return isBalanced;
        }
        public int TreeDepth(TreeNode root){
            if(root==null)
                return 0;
            int left=TreeDepth(root.left);
            int right=TreeDepth(root.right);
             
            if(Math.abs(left-right)>1){
                isBalanced=false;
            }
            return right>left ?right+1:left+1;
             
        }

    和原来不同的是在TreeDepth方法中,多了一步判断:

    if(Math.abs(left-right)>1){
                isBalanced=false;
            }

    这样便满足了节省计算时间的要求。

  • 相关阅读:
    JavaScript + HTML 虚拟键盘效果
    HTML + JS随机抽号。
    JavaScript 鼠标划过 播放音乐。
    JavaScript 笔记
    HTML5 div+css导航菜单
    div错位/解决IE6、IE7、IE8样式不兼容问题
    HTML5-表单的创建
    HTML5-布局的使用
    HTML5-块元素标签的使用
    HTML5-列表的使用
  • 原文地址:https://www.cnblogs.com/Dream-chasingGirl/p/10198103.html
Copyright © 2011-2022 走看看