1.题目:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。(在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 )
2.思路:
判断一个数是否为平衡二叉树。平衡二叉树是左子树的高度与右子树的高度差的绝对值小于等于1,同样左子树是平衡二叉树,右子树为平衡二叉树。
方法一:自上而下的遍历

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        //平衡二叉树:|leftHeight-rightHeight|<=1
        if(root==null){//判空
            return true;
        }
        if(Math.abs(leftHeight(root)-rightHeight(root))>1){//判断左右高度差值的绝对值
            return false;
        }else{
            return true;
        }
    }
    public int height(TreeNode node){//求当前节点的高度
        return Math.max(node.left==null?0:height(node.left),node.right==null?0:height(node.right))+1;//采用三目运算+递归的方式
    }
    public int leftHeight(TreeNode root){//当前节点的左节点高度
        if(root.left==null){//判空
            return 0;
        }
        return height(root.left);
    }
     public int rightHeight(TreeNode root){//当前节点的右节点的高度
        if(root.right==null){
            return 0;
        }
        return height(root.right);
    }
}