为什么有人会更喜欢Red-black tree到Anderssen tree,因为后者比前者简单得多,据说它在实践中达到了几乎相同的性能?
答案 0 :(得分:5)
"据说" (在维基百科上)" [a]红黑树的性能比AA树更一致,但是AA树往往更平坦,这导致搜索时间略快。"因此,R-B树的第一个优势是它们的性能更容易预测,使它们成为库的良好数据结构(例如从中衍生出来的原始STL和C ++标准库)。
其次,如果你看一下source for the statement,你会看到两张表(第71页和第72页)表明AA树需要进行更多的比较以进行删除,并且两次插入都需要更多的旋转并删除,以实现更平坦的树木。所以这里有一个权衡:当比较便宜但更新频繁时,红黑树可能胜过AA树;否则,当比较费用昂贵但查找比更新更频繁时,AA树可能会赢。
有趣的是,这种权衡与red-black trees and AVL trees之间的权衡非常相似。 AVL树和AA树的比较会更有趣。