为什么有人会喜欢Red-black tree而不是Anderssen tree,因为后者比前者简单得多,而且据说它在实践中取得了几乎相同的性能?
最佳答案
“据说”(在维基百科上)红黑树的性能比a a树更稳定,但aa树往往更平坦,这会导致搜索速度稍快。”因此r-b树的第一个优点是其性能更容易预测,使其成为库(如原始库)的良好数据结构STL和C++标准库源于此)。
其次,如果您查看source for the statement,您将看到两个表(第71页和第72页),这两个表指示aa树需要更多的比较来进行删除,并且需要更多的旋转来进行插入和删除,以实现更平坦的树。所以这里有一个折衷方案:当比较便宜但更新频繁时,红黑树可能比a a树更好;否则,当比较昂贵但查找比更新更频繁时,aa树可能会获胜。
有趣的是,这种权衡与red-black trees and AVL trees之间的权衡非常相似。比较avl树和a a树会更有趣。