为什么说 AVL 树是严格平衡的,而红黑树不是严格平衡的

2019-01-15 11:43:14 +08:00
 linxiaoziruo

为什么说 AVL 树是严格平衡的,而红黑树不是严格平衡的?红黑树经过旋转不也是平衡树吗?怎么还说红黑树不是严格平衡的呢?

2622 次点击
所在节点    问与答
10 条回复
lttzzlll
2019-01-15 12:36:12 +08:00
严格平衡的定义 任意左右子树高度差不超过 1。其余都是非严格平衡。
lttzzlll
2019-01-15 12:39:49 +08:00
叶节点,非任意。
yidinghe
2019-01-15 13:05:49 +08:00
红黑树是根据自己那套规则来判断要不要旋转,旋转完之后即使没有达到严格平衡,只要符合规则就处理结束了。这是在执行效率方面所做的取舍。
linxiaoziruo
2019-01-15 13:44:21 +08:00
@lttzzlll 没明白你的意思。平衡树的定义不就是“任意左右子树高度差不超过 1 ”吗?
linxiaoziruo
2019-01-15 13:45:08 +08:00
@linxiaoziruo 红黑树是平衡树的一种。什么才是严格平衡呢?红黑树又为什么不是严格平衡呢?
GuuJiang
2019-01-15 14:14:06 +08:00
这个在红黑树的定义里已经写得很清楚了吧,红黑树的平衡只是保证了各子树的黑高度相等,而由黑高度的定义可以看出最坏情况下最高子树的高度是最低子树高度的两倍
linxiaoziruo
2019-01-15 15:43:17 +08:00
@GuuJiang 弄明白了。红黑树不是平衡树,只是接近平衡树。
mortonnex
2019-01-15 16:00:28 +08:00
建议楼主顺便了解下:
1.hashmap 中红黑树的使用
2.MySQL 中索引为什么要用 B+树

学习 avl 树可以串联起很多知识
linxiaoziruo
2019-01-15 17:07:08 +08:00
各位大佬们,多谢了!工作四五年,从没正儿八经写过这些数据结构,最近在自己重新写,收益颇丰。
linxiaoziruo
2019-01-16 14:49:08 +08:00
@GuuJiang 大佬,我看到一篇文章,内容是把 2-3 树演化成“红黑树”,但是这里红色和黑色标志的是“链接”,不是“节点”。红黑树还能这么定义的吗?给链接着色生成的红黑树,和给节点着色产生的红黑树都是红黑树吗?还是说给链接着色的红黑树只不过时作者意淫出来的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX