您的位置:首页 > 其它

平衡二叉树的判断

2017-06-04 13:32 99 查看
  public boolean isBlance(TreeNode root) {

        

        boolean []result=new boolean[1]; 

        result[0]=true;

        int level=1;

        getHeight(root,level,result);

        return result[0];

       

    }

    //返回树的最大深度

    public int getHeight(TreeNode root,int level,boolean [] result){

        if(root==null){//如果根节点为空,直接返回树的高度,且该树为空,是平衡二叉树

            return level;

        }

        //遍历左子树,

        int LeftHeight=getHeight(root.left,level+1,result);

        //如果左子树不是平衡二叉树,则直接返回

        if(!result[0]){

            return level;

        }

        //遍历右子树

        int RightHeight=getHeight(root.right,level+1,result);

        //如果右子树不是平衡二叉树,则直接返回

        if(!result[0]){

            return level;

        }

        //通过比较左右子树的深度,如果他们的深度差大于1,则说明不是平衡二叉树,直接返回

        if(Math.abs(LeftHeight-RightHeight)>1){

           result[0]=false;

        }

        //返回深度最大的那个子树

        return Math.max(LeftHeight,RightHeight);

        

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: