写在前面:
平衡二叉树(AVL树)首先是一个二叉搜索树,他的特点是:
(1)平衡二叉树可以是一颗空树或左右子树的高度差的绝对值
(2)他的左子树和右子树也都是平衡二叉树
代码实现:
boolean isBalanced = true;
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) {
return true;
}
getDepth(root);
return isBalanced;
}
public int getDepth(TreeNode node) {
if (node == null) {
return 0;
}
int left = getDepth(node.left);
int right = getDepth(node.right);
// 判断子树是否为平衡树
int result = Math.abs(left - right);
if (result > 1) {
isBalanced = false;
}
// 树的高度取最高的子树的高度
return left < right ? right + 1 : left + 1;
}总结:需要注意的是,平衡二叉树(AVL树)首先是一个二叉搜索树,但反之,二叉搜索树不一定是平衡二叉树。
本文介绍了平衡二叉树(AVL树)的概念及其特点,并通过示例代码详细讲解了如何判断一棵二叉树是否为平衡二叉树。平衡二叉树是一种特殊的二叉搜索树,它的左右子树高度差不超过1。
301

被折叠的 条评论
为什么被折叠?



