2021年9月13日17:34:19
1.
剪枝
自底向上 不是平衡二叉树就返回-1

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        return depth(root) != -1;

    }
    public int depth(TreeNode root){
        if(root == null) return 0;

        int left = depth(root.left);
        if(left == -1) return -1;

        int right = depth(root.right);
        if(right == -1) return -1;

        return Math.abs(left-right)<2 ?  Math.max(left,right)+1:-1;


    }
}

2.
自顶向上 计算量大

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root == null) return true;


        boolean left = IsBalanced_Solution(root.left);
        boolean right = IsBalanced_Solution(root.right);

        int ldepth = depth(root.left);
        int rdepth = depth(root.right);

        if(left && right && Math.abs(ldepth-rdepth) <=1) return true;
        else return false;
    }
    public int depth(TreeNode root){
        if(root == null) return 0;

        int left = depth(root.left);
        int right = depth(root.right);

        return Math.max(left,right) + 1;
    }
}