首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红黑树和AVL树是否具有相同的平衡条件?

红黑树和AVL树是否具有相同的平衡条件?
EN

Stack Overflow用户
提问于 2017-03-21 22:05:20
回答 1查看 969关注 0票数 1

例如:

不平衡的树:

代码语言:javascript
复制
  4
/   \
1    11
    /
   7
 /  \
5    9

平衡后,将成为AVL树:

代码语言:javascript
复制
    11
   /   \
  4    7
 /    / \
1    5   9

但是,如果不平衡树是R-B树,如下所示:

(\表示读取指针。\表示黑色指针。)

代码语言:javascript
复制
  4
/   \\
1    11
    /
   7
 //  \\
 5    9

这是合法的R-B树吗?或者我应该让它保持平衡,就像我对树所做的那样?

EN

回答 1

Stack Overflow用户

发布于 2017-03-22 01:15:20

AVL树的平衡条件不同于红黑树的平衡条件。在某种意义上,AVL树比红黑树更平衡。

在AVL树中,对于每个节点vv的右子树的高度和v的左子树的高度之间的差必须至多为1。与红黑树相比,这是一个非常严格的平衡属性。在红黑树中,从根到叶的任何简单路径的长度都不允许超过其他路径的两倍。这个属性是由five color conditions产生的,二分查找树必须满足才能被认为是有效的红黑树。

您的示例红黑树在AVL意义上确实是不平衡的,因为根的左子树的高度与其右子树的高度之间的差是2。然而,该树在红黑意义上是平衡的,因为它满足五个红黑颜色条件。

AVL平衡条件意味着the height of an AVL tree is bounded by roughly 1.44log(n),而没有什么能阻止红黑树的高度变大:红黑树平衡条件只意味着高度上的a bound of 2log(n)

AVL树往往比红黑树短,这一事实似乎表明它们必须表现得更好。事实并非如此: AVL树的搜索速度确实更快,因为它比红黑树更平衡。但AVL树如此平衡的原因是,保持它的平衡在计算上比保持红黑树平衡要困难。特别地,与相应的红黑树中的这些操作相比,AVL rotations使得在AVL树中的插入和删除更慢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42929439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档