众所周知,插入和删除都需要O(log n)。 AVL树需要O(log n),因为它需要O(log n)插入和O(log n)旋转才能达到平衡。因为它需要O(log n)来插入,所以RB-INSERT-FIXUP需要O(log n)用于情况1(彩色翻转),因为它需要O(log n)来插入,因此它需要O(log n) ,最多旋转2次。 因此,似乎AVL需要2O(log n),但RB树需要2O(log n)+ C.AVL树的旋转和红黑树的颜色翻转
为什么我们认为RB树在插入时比AVL更快?仅仅因为旋转需要比颜色翻转更多的时间?旋转和颜色翻转都需要O(1),为什么旋转比颜色翻转更耗时? 谢谢!:)
这个问题已经更新,谢谢你! – Aleeee
@Aleeee请检查最新的答案。 – Max
插入需要O(log n)。在RB-INSERT-FIXUP中,while循环仅在情况1发生时重复,然后指针z在树上向上移动两级。因此while循环可以执行的总次数是O(lg n)。这来自<算法第三版介绍>。所以整个RB树插入需要2O(log n)+ C。 AVL也需要2O(log n)。 – Aleeee