sur*_*ren 81 algorithm red-black-tree data-structures
除了节点中的红色和黑色外,AVL和红黑树都是自平衡的.选择红黑树而不是AVL树的主要原因是什么?红黑树有哪些应用?
Nik*_*nka 92
选择红黑树而不是AVL树的主要原因是什么?
红黑树和AVL树都是最常用的平衡二叉搜索树,它们支持插入,删除和查找保证O(logN) time.但是,两者之间有以下几点比较:
O(N).但是,如果我们知道将插入树中的键总是大于零,我们可以使用键的符号位来存储红黑树的颜色信息.因此,在这种情况下,红黑树需要java.util.TreeMap.红黑树的应用是什么?
红黑树更通用.它们在添加,删除和查找方面表现相对较好,但AVL树的查找速度更快,代价是添加/删除速度较慢.红黑树用于以下内容:
jor*_*dan 10
试着阅读这篇文章
它提供了一些关于差异,相似性,性能等的好的见解.
这是文章的引用:
RB-Trees和AVL树一样,是自平衡的.它们都提供O(log n)查找和插入性能.
不同之处在于RB-Trees保证每次插入操作的O(1)旋转.这实际上是实际成本中的性能成本.
简化后,RB-Trees从概念上成为2-3个树,而不会带来动态节点结构的开销.物理RB树实现为二叉树,红/黑标志模拟2-3行为
就我自己的理解而言,AVL树和RB树在性能方面并不是很遥远.RB树只是B树的变体,并且平衡的实现方式与AVL树不同.
多年来,我们对性能差异的理解有所改善,现在在 AVL 上使用红黑树的主要原因是无法获得良好的 AVL 实现,因为它们不太常见,也许是因为它们没有包含在 CLRS 中。
这两种树现在都被认为是等级平衡树的形式,但红黑树在现实世界的测试中始终慢约 20%。甚至在插入顺序数据时慢 30-40% 。
所以研究过红黑树而不研究AVL树的人往往会选择红黑树。红黑树的主要用途在Wikipedia 条目中有详细说明。