红黑树中的删除操作

时间:2013-08-29 13:32:25

标签: c++ data-structures red-black-tree

最近,我正在学习左倾红黑树。我红了this来帮助我学习。但是,我无法在删除操作中获得代码的含义,它们是:

if (isRed(h.left))h = rotateRight(h);

我找不到一个很好的例子来帮助我使用这段代码。

任何人都可以帮我解释代码应该存在的原因(一个小例子好多了)?

1 个答案:

答案 0 :(得分:0)

PDF的第7页包含完整功能。基本上它正在做什么,如果该行是“红色”(意味着它被添加以强制树为LLRBT),则将左子节点旋转到它的位置。

    A
   / \
  B   C

如果我删除A,我会将B旋转到它的位置:

    B
     \
      C