Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
左子树和右子树的高度差不能超过1。helper的作用用于判断每一个节点的左右子节点是否平衡。
压栈思路:先左节点全入,然后左出右入,压完栈后再比较。
特殊情况:空树为平衡树。
public boolean isBalanced(TreeNode root) {
return helper(root)>=0;
}
public int helper(TreeNode root) {
if(root==null)
return 0;
int left=helper(root.left);
int right=helper(root.right);
if(Math.abs(left-right)>1)
return -1;
if(left<0||right<0)
return -1;
return Math.max(left, right)+1;
}