一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
public boolean isBalanced(TreeNode root) {
return getHeight(root) == -1 ? false : true;
}
//得到root结点的高度
public int getHeight(TreeNode node) {
//如何结点为null,说明高度为0
if (node == null) {
return 0;
}
//得到左节点的高度
int leftHeight = getHeight(node.left);
//node的左子树不是平衡二叉树
if (leftHeight == -1) {
return -1;
}
//得到右节点的高度
int rightHeight = getHeight(node.right);
//node的右子树不是平衡二叉树
if (rightHeight == -1) {
return -1;
}
//如果左右结点高度差大于1,说明该二叉树不是平衡二叉树
if (Math.abs(leftHeight - rightHeight) > 1) {
return -1;
} else {
//该node是平衡二叉树,返回该树的高度
return Math.max(leftHeight, rightHeight) + 1;
}
}