AVL树旋转和红黑树颜色翻转

时间:2013-10-07 11:52:24

标签: algorithm avl-tree red-black-tree

众所周知,插入和删除都需要O(log n)。 AVL树需要O(log n),因为它需要插入O(log n)和O(log n)来进行平衡旋转。

RB树需要O(log n),因为它需要插入O(log n),在算法第三版中,RB-INSERT-FIXUP需要O(log n)用于案例1(颜色翻转),旋转最多2次。 所以似乎AVL需要2O(log n),但RB树需要2O(log n)+ C.

为什么我们认为RB树在插入时比AVL更快?仅仅因为旋转需要比彩色翻转更多的时间?旋转和颜色翻转都需要O(1),为什么旋转比彩色翻转更耗时? 感谢:!)

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,是的,RB-Trees和AVL-Trees都在O(logn)时间提供查找,插入和删除。

AVL-Trees比RB-Trees更加严格平衡。为了实现这一点,需要大量的旋转,这是耗时的。 RB-Trees略微不平衡,因为它们具有较弱的平衡规则,因此它们需要较少的插入和删除操作。因此,AVL-Trees中的查找比RB-Trees更快,但RB-Trees中的插入和删除速度更快。

修改

请阅读this blog post。关键是RB树在插入后平衡比AVL树更快。是的,旋转确实在AVL树中花费O(1)时间,最多需要完成两次旋转,但仍需要找到旋转点,旋转时间变为O(logn)。在RB树中,插入后的重新平衡以摊销的常量时间运行。因此,O(1)分摊了彩色翻转的时间,而不是O(logn)