public class Solution {

public boolean IsBalanced_Solution(TreeNode root) {
    //遇见树 ---> 想递归
    //思路是:将上一题中,求树的深度的方法利用到这里,先求出两棵子树的深度,然后相减取绝对值判断即可

    if(root == null){
        return true;
    }

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

    //return Math.abs(left-right) <= 1 ? true : false;
    //虽然写成上面的也能通过,但上面的那行代码少考虑了左右子树也必须是平衡二叉树的情况
    //所以正确的应写成下面的
    return Math.abs(left-right) <= 1 && IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);

}

//求一颗二叉树的深度的方法
private int TreeDepth(TreeNode root){
    if(root==null){
        return 0;
    }
    int leftVal = TreeDepth(root.left);
    int rightVal = TreeDepth(root.right);

    return ((leftVal > rightVal) ? leftVal : rightVal) + 1;
}

}