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.
可以算一下每个node的高度,算的同时可以比较是否满足两个子树高度相差不超过1的条件。
每个node,要求本身满足左右子树高度相差不超过1,左右子树也要递归满足条件才成立。
public boolean isBalanced(TreeNode root)
{
return getdeep(root)[1]==1;
}
private int[] getdeep(TreeNode t)
{
if(t==null)
return new int[] {0,1};
int[] larr=getdeep(t.left);
int[] rarr=getdeep(t.right);
int leftdeep=larr[0];
int rightdeep=rarr[0];
int max=Math.max(leftdeep, rightdeep);
boolean heightdis=larr[1]==1&&rarr[1]==1&&((Math.abs(leftdeep-rightdeep))<=1);
return new int[] {max+1,heightdis==true?1:0};
}