思路: 递归判断树的左右子树深度是否满足平衡,只要存在一个地方不满足,则返回-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;
}
}