代码之家  ›  专栏  ›  技术社区  ›  JimBelushi2

如何在红黑树中旋转

  •  2
  • JimBelushi2  · 技术社区  · 7 年前

    我想用红黑树来解决这个练习:我需要按这个顺序插入2,1,4,5,9。在最后一次输入之后,我需要用 插入固定件 算法: 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 回复  |  直到 7 年前
        1
  •  2
  •   Deepak Tatyaji Ahire    7 年前

    你接错了案子。我已经在以下步骤中解释了答案。在最后一步,即插入9,我们必须进行左旋转(4)和重新着色。

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

    enter image description here

    推荐文章