附加知识点:
1. 红黑树的规则
2.“3+4”重构
无论插入还是删除,无论是单旋还是双旋,最终效果应该都是这样一种形式。
一. 双红缺陷
1. 插入关键码e,并设T中文本不含e
2. x=insert(e)必为末端节点,设x的父亲p=x->parent存在
3. 将x染红(除非它是根),规则124依然满足,而3则不一定
4. 双红(double-red):新插入的节点x与它的父亲p同时为红色=>双红缺陷
二. RR-1
u->color=Black
1. zig-zig
只需将超级节点中pg的颜色互换。
2. zag-zig
只需将超级节点中xg的颜色互换。
三. RR-2
u->color=Red
当叔父节点u为红色时,修正双红缺陷导致的红黑树拓扑结构的变化为没有变化。
四. 归纳
1. 重构,染色均属常数时间的局部操作,只需统计其总次数。
2.
判读叔父节点的颜色,为黑色则做一次局部的3+4调整,再做常数次的染色操作。
为红色则略复杂,需做常数次的重染色,但可能导致在更高的节点处进而出现双红缺陷,需重新回到算法的入口。最坏的情况会多大O(logn),但这个循环的过程,只需做重染色,不必做任何的结构调整。
3.