红黑树是一种含有红黑结点的二叉查找树。它必须满足下面性质:
红黑树应先按二叉查找树的插入方法插入到叶子结点,插入的结点先设置为红色,然后再按照红黑树的性质对其进行调整。
红黑树的调整始终优先调整不满足性质的最小子树!
在讲解之前,我们先来约定下各字母含义。
I表示插入结点,P表示插入结点的父结点,S表示插入结点的叔叔结点,PP表示插入结点的祖父结点。
最简单的一种情景,直接把插入结点作为根结点就行,但注意,根据红黑树性质2:根节点是黑色。还需要把插入结点设为黑色。
处理:把插入结点作为根结点,并把结点设置为黑色。
可简单认为不对原来的红黑树做任何操作。
由于插入结点为红色,不影响平衡。直接插入
再次回想下红黑树的性质2:根结点是黑色。如果插入的父结点为红结点,那么该父结点不可能为根结点,所以插入结点总是存在祖父结点。
处理:
把PP结点设为红色了,如果PP的父结点是黑色,那么无需再做任何处理;但如果PP的父结点是红色,根据性质4,此时红黑树已不平衡了,所以还需要把PP当作新的插入结点,继续做插入操作自平衡处理,直到平衡为止。
处理:
处理:
该情景对应情景4.2,只是方向反转
原文链接 原文包含红黑树插入删除的详细操作。
原文:https://www.cnblogs.com/Dallas98/p/14477178.html