insert_rebalance 在红黑树中

insert_rebalance in red-black tree

insert_rebalance in rb_tree 大多需要两次轮换?

我不这么认为!

"1"为最新插入节点。是案例1:current节点是红色的,父亲是红色的,叔叔是红色的。

所以我们设置父亲的颜色为黑色,叔叔的颜色为黑色,父亲的父亲的颜色为红色,将父亲的父亲设置为当前节点,继续走

经过以上操作,又是案例1

想象一下:如果一直是case 1,rotate的个数不会只有2个,可能更多。

我上面的说法对吗?我想证实一下我的想法。

如果插入位置是随机的,那么两次旋转是很不寻常的。

从 0 个节点开始:

B(0%需要旋转两次)

b r(25% 需要旋转两次)

b r r (0% 需要旋转两次)

b 乙乙 r(20% 需要旋转两次)

b 乙乙 r r (0% 需要旋转两次)

在可以进行两次旋转的步骤中,也可以在不需要第二次旋转的情况下填充树。如果插入位置始终是最大而不是随机,则两次旋转插入的数量为 0,但大约 50% 的时间你将旋转一次。