力扣110--平衡二叉树-java

力扣110–平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。

示例 1:

给定二叉树 [3,9,20,null,null,15,7]

3

/
9 20
/
15 7
返回 true 。

示例 2:

给定二叉树 [1,2,2,3,3,null,null,4,4]

   1
  / \
 2   2
/ \

3 3
/
4 4
返回 false 。

通过次数117,289提交次数216,837
在真实的面试中遇到过这道题?

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

这是一道简单的题,他让我们判断是否有两个子树的绝对深度差超过1,这时我们应该想到递归,方便找出某一个节点两个子树的深度,之后再判断其绝对深度差。

代码

力扣110--平衡二叉树-java_第1张图片

class Solution {
    boolean flag=true;
    public boolean isBalanced(TreeNode root) {
        if(root==null){
            return flag;
        }
        depth(root);
        return flag;
    }
    public int depth(TreeNode root){
        if(root==null){
            return 0;
        }
        int left=depth(root.left)+1;  //左子树的深度
        int right=depth(root.right)+1;  //右子树的深度
        if(Math.abs(left-right)>1){   //不平衡的时候直接更改输出标志就可以了
            flag=false;
            return 0;
        }
        if(Math.abs(left-right)==1){    //差值等于1时,返回该节点的最大的绝对深度
            return Math.max(left,right);
        }
        return left;       //相等时,随便返回某一子树的深度即可
    }
}

你可能感兴趣的:(java,二叉树,leetcode)