dfs遍历整棵树,对于每个节点判断左右子树的高度差是否满足平衡,平衡的话返回max高度作为自己的高度给上一节点。不平衡的话,返回-1
class Solution {
public boolean isBalanced(TreeNode root) {
return find(root,0) == -1 ? false:true;
}
int find(TreeNode t, int deep){
if(t == null)
return deep;
int l = find(t.left, deep + 1);
int r = find(t.right,deep + 1);
if(l == -1 || r == -1)
return -1;
if(Math.abs(l - r) > 1)
return -1;
return Math.max(l,r);
}
}