如何在红黑树中旋转

时间:2018-05-28 13:54:36

标签: algorithm tree rotation red-black-tree

我试图用红黑树解决这个练习:我需要按此顺序插入2,1,4,5,9。在最后一次输入后,我需要将其与 Insert-Fixup 算法进行平衡: enter image description here

我需要遵循的算法部分是:

if z == z.p.right
   z = z.p
   LEFT-ROTATE (T, z)
z.p.color = BLACK
z.p.p.color = RED
RIGHT-ROTATE (T, z.p.p)

(Z是我要插入的节点),z.p是它的父亲。所以我试着按照步骤直到左旋转,这就是结果:是不是? enter image description here

我在互联网上搜索并且我读到有双重旋转算法,但我无法弄清楚我是否可以在这里使用它们而不是使用单个旋转(例如我不知道热到右旋转节点与4)。

1 个答案:

答案 0 :(得分:2)

您正在关注错误的案例。我已在以下步骤中解释了答案。在最后一步,即插入9,我们必须做左旋(4)和重新着色。

以下是我解释过步骤的图片:

enter image description here