红黑树插入

时间:2013-11-06 04:50:20

标签: algorithm data-structures red-black-tree-insertion

我在红黑树中插入了节点36,产生了以下红黑树:

enter image description here

我的问题是如何在这种特殊情况下处理双红?案例2还是3?

2 个答案:

答案 0 :(得分:1)

基于Wikipedia的属性和案例...

36将插入案例5,向左旋转22

  

父母P是红色但是叔叔是黑色或不是。

维基百科只是说“叔叔是黑人”,但是,看看代码,你会发现那个案子会触发。


请注意,没有36的树已经无效,因为不保留属性5(从任何给定节点到其叶节点的所有路径包含相同数量的黑色节点):

  • 20到15包含1个黑色节点
  • 20到30包含2个黑色节点

假设插入顺序为20, 15, 22, 30, 36 ...

所有节点都以红色插入。

将在案例2下插入

22

  

父母是黑人。

将在案例3下插入

30,使2215设置为黑色,20设置为红色。

  

父母和叔叔是红色的;两者都重新涂黑,祖父母变成红色。

36将插入案例5,向左旋转22

  

父母P是红色但是叔叔是黑色或不是。

答案 1 :(得分:0)

22没有一个孩子

因此。

案例1:重组

我们将保持旋转

30->根“黑”

22->左子“红色”

36->右子“红色”