我在红黑树中插入了节点36,产生了以下红黑树:
我的问题是如何在这种特殊情况下处理双红?案例2还是3?
答案 0 :(得分:1)
基于Wikipedia的属性和案例...
36
将插入案例5,向左旋转22
。
父母P是红色但是叔叔是黑色或不是。
维基百科只是说“叔叔是黑人”,但是,看看代码,你会发现那个案子会触发。
请注意,没有36
的树已经无效,因为不保留属性5(从任何给定节点到其叶节点的所有路径包含相同数量的黑色节点):
假设插入顺序为20, 15, 22, 30, 36
...
所有节点都以红色插入。
将在案例2下插入 22
。
将在案例3下插入父母是黑人。
30
,使22
和15
设置为黑色,20
设置为红色。
父母和叔叔是红色的;两者都重新涂黑,祖父母变成红色。
36
将插入案例5,向左旋转22
。
父母P是红色但是叔叔是黑色或不是。
答案 1 :(得分:0)
22没有一个孩子
因此。
案例1:重组
我们将保持旋转
30->根“黑”
22->左子“红色”
36->右子“红色”