java:
class Solution {
public boolean isBalanced(TreeNode root) {
if (isBalancedCore(root) == -1)
return false;
return true;
}
public int isBalancedCore(TreeNode root) {
if (root == null)
return 0;
int left = isBalancedCore(root.left);
int right = isBalancedCore(root.right);
if (Math.abs(left - right) > 1 )
return -1;
//注!!发现-1一直返回-1,不然就返回最大深度
return (left == -1 || right == -1) ? -1 : Math.max(left, right) + 1;
//return Math.abs(left - right) > 1 ? -1 : Math.max(left, right) + 1这是错的
}
}