insert_rebalance在红黑树中

时间:2017-08-30 02:49:44

标签: algorithm tree red-black-tree

rb_tree中的
insert_rebalance主要需要两次旋转?

我不这么认为!

enter image description here

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

因此我们将父亲的颜色设置为黑色,叔叔的颜色为黑色,父亲的颜色为红色,并将父亲的父亲设置为当前节点,并继续前进。

经过上述操作后,又是案例1。

让我们想象一下:如果它总是成为案例1,那么旋转的数量不会只是2,也许更多。

我的上述陈述是对的?我想确认一下我的想法。

1 个答案:

答案 0 :(得分:0)

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

从0个节点开始:

B(0%需要两次旋转)

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

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

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

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

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