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