众所周知,插入和删除都需要O(log n)。AVL 树需要 O(log n),因为它需要 O(log n) 来插入和 O(log n) 来旋转以达到平衡。
RB 树需要 O(log n),因为它需要 O(log n) 才能插入,在第三版算法简介中,对于案例 1(颜色翻转),RB-INSERT-FIXUP 需要 O(log n),最多2次旋转。所以看起来 AVL 需要 2O(log n),但 RB 树需要 2O(log n)+C。
为什么我们认为 RB 树在插入方面比 AVL 更快?仅仅因为旋转比颜色翻转需要更多时间?旋转和颜色翻转都需要 O(1),为什么旋转比颜色翻转更耗时?谢谢!:)