performance - 红黑树与安德森树

标签 performance algorithm data-structures red-black-tree

为什么有人会喜欢 Red-black treeAnderssen tree ,因为后者比前者简单得多,据说它在实践中达到了几乎相同的性能?

最佳答案

“据说”(在维基百科上)“[a] 红黑树的性能比 AA 树更一致,但 AA 树往往更平坦,这导致搜索时间稍快。 “所以 R-B 树的第一个优势是它们的性能更容易预测,这使它们成为库的良好数据结构(例如从中派生出的原始 STL 和 C++ 标准库)。

其次,如果您查看 source for the statement ,您会看到两个表(第 71 页和第 72 页),它们表明 AA 树需要更多的比较来进行删除,并且需要更多的旋转来插入和删除,以获得更平坦的树。所以这里有一个权衡:当比较便宜但更新频繁时,红黑树可能优于 AA 树;否则,当比较代价高昂但查找比更新更频繁时,AA 树可能会获胜。

有趣的是,这种权衡与 red-black trees and AVL trees 之间的权衡非常相似. AVL 树和 AA 树的比较会更有趣。

关于performance - 红黑树与安德森树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435912/

相关文章:

c - 使用结构在 C 中获取变量的错误值

java - 关于做大量计算的三个问题

C++ 使用 OpenMP 任务并行化文件 I/O 和分析

performance - 如何访问 Apache Pig 中的 UDF 计时计数器?

javascript - 从嵌套的复杂对象中获取特定对象

c++ - 使用标准算法库实现二元关系的唯一等价

java - 获取数组中连续元素的绝对差值,并返回哪个差值出现最多

从堆栈创建二叉树?

算法:二维变换,找到离群点对并省略

php - 存储相似音乐的最佳方式