判断一棵二叉树为平衡二叉树
平衡二叉树又称为AVL树,得名于其发明者的名字( Adelson-Velskii 以及 Landis),必须满足:
- 左右子树的高度差的绝对值小于等于一;
- 每个子树都是平衡二叉树
解法:
- 首先求子树的高度,最简单的方法就是递归
public int height (TreeNode root) {
if (node == null) {
return 0;
}
return Math.max(height(node.left), height(root.right)) + 1; // 加1,需要算上根结点
}
- 满足左右子树高度差的绝对值为小于等于1,借助内置Math函数
Math.abs()
完成,代码如下:
public boolean isBalanced(TreeNode root) {
if (root == null){
return true; // 根节点为空,可看作为平衡二叉树
} else {
return Math.abs(height(root.left) - height(root.right)) <= 1
&& isBalanced(root.left)
&& isBalanced(root.right);
}
}