递归
public boolean isBalanced(TreeNode root) {
if (getHeight(root) == -1) {
return false;
}
return true;
}
// -1代表该树不是AVL树,否则返回值是以该节点为根节点树的高度
public int getHeight(TreeNode t) {
if (t == null) {
return 0;
}
int leftHeight = getHeight(t.left);
if (leftHeight == -1) {
return -1;
}
int rightHeight = getHeight(t.right);
if (rightHeight == -1) {
return -1;
}
if (Math.abs(leftHeight - rightHeight) > 1) {
return -1;
}
return Math.max(leftHeight, rightHeight) + 1;
}
第一次没有写出来的原因:递归函数的返回值应该是boolean(判断当前节点的是不是AVL树)还是int(返回当前节点的树高)。但是有一个综合的办法,因为树高一定是正数,那么负数就可以表示当前树不是AVL树。