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

Algorithm AVL树旋转和红黑树颜色翻转,algorithm,avl-tree,red-black-tree,Algorithm,Avl Tree,Red Black Tree,众所周知,插入和删除都需要O(logn)。 AVL树需要O(logn),因为它需要O(logn)来插入,O(logn)来旋转以达到平衡 RB树需要O(logn),因为它需要O(logn)来插入,在算法简介第三版中,RB-insert-FIXUP需要O(logn)用于案例1(颜色翻转),最多需要2次旋转。 因此,似乎AVL需要2O(logn),但RB树需要2O(logn)+C 为什么我们认为RB树在插入方面比AVL更快?只是因为旋转比颜色翻转需要更多的时间?旋转和颜色翻转都需要O(1),为什么旋转

众所周知,插入和删除都需要O(logn)。 AVL树需要O(logn),因为它需要O(logn)来插入,O(logn)来旋转以达到平衡

RB树需要O(logn),因为它需要O(logn)来插入,在算法简介第三版中,RB-insert-FIXUP需要O(logn)用于案例1(颜色翻转),最多需要2次旋转。 因此,似乎AVL需要2O(logn),但RB树需要2O(logn)+C

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

如果我正确理解您的问题,是的,RB树和AVL树确实都在
O(logn)
时间中提供查找、插入和删除功能

AVL树比RB树更严格地平衡。要实现这一点,需要进行大量的旋转,这非常耗时。RB树有点不平衡,因为它们的平衡规则较弱,因此它们需要较少的插入和删除操作。因此,AVL树中的查找速度比RB树快,但RB树中的插入和删除速度更快

编辑

请阅读。关键是插入后RB树的平衡速度比AVL树快。是的,在AVL树中,一次旋转确实需要
O(1)
时间,最多需要进行两次旋转,但仍然需要找到旋转点,旋转时间变为
O(logn)
。而在RB树中,插入后的再平衡在摊销的固定时间内运行。因此,
O(1)
彩色翻转的摊销时间,而不是
O(logn)

插入需要O(logn)。在RB-INSERT-FIXUP中,while循环仅在出现情况1时重复,然后指针z在树上向上移动两级。因此,while循环可执行的总次数为O(lg n)。这是我的。因此,整个RB树插入需要2O(logn)+C。AVL也需要2O(logn)。