
思路:与二叉树最大高度类似,但是这里需要返回 -1 的高度来标识不是平衡二叉树,判断左右子树的高度相差大于1则不平衡,否则就是平衡。
class Solution {
    public boolean isBalanced(TreeNode root) {
        int ans = func(root);
        if(ans > -1) {
            return true;
        }
        return false;
    }
    public int func(TreeNode root) {
        if(root == null) return 0;
         
        //如果不是平衡二叉树,返回-1作为信号
        int leftNum = func(root.left);
        if(leftNum == -1) return -1;
        int rightNum = func(root.right);
        if(rightNum == -1) return -1;
        //左右相差大于1则不是平衡二叉树
        if(Math.abs(leftNum-rightNum) > 1) {
            return -1;
        }else {
            return 1+ Math.max(leftNum, rightNum); //子树最大高度
        }
    }  
}
                


















