思路: 递归判断树的左右子树深度是否满足平衡,只要存在一个地方不满足,则返回-1。

public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root==null)return true;
        return dfs(root)!=-1;
    }
    int dfs(TreeNode root){
        if(root==null)return 0;
        int left=dfs(root.left);
        int right=dfs(root.right);
      	//前面已经存在不满足平衡的子树,则直接返回-1
        if(left==-1 || right==-1)return -1;
        if(Math.abs(left-right)<2)return Math.max(left,right)+1;
        return -1;
    }
}