简单的一道递归,很典型的题了,首先明白什么是平衡二叉树。
平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。
那么对于节点 X 其左右子树是平衡二叉树且高度小于等于 1 即可

public class Solution {

    public boolean IsBalanced_Solution(TreeNode root) {

        return process(root).isBalanced;
    }

    class Info{
        boolean isBalanced;
        int length;
        Info(boolean b,int l){
            this.isBalanced=b;
            this.length=l;

        }
    }

    public Info process(TreeNode x){
        if(x==null){
            return new Info(true,0);
        }
        Info leftInfo=process(x.left);
        Info rightInfo=process(x.right);
        boolean isBalanced=leftInfo.isBalanced&&rightInfo.isBalanced&&(Math.abs(leftInfo.length-rightInfo.length)<=1);
        int length=Math.max(leftInfo.length,rightInfo.length)+1;
        return new Info(isBalanced,length);
    }
}