红黑树节点的删除操作比其节点的插入操作要麻烦很多,自己在这个知识点的学习当中也困惑很多,这篇博客是自己在红黑树学习当中的一些自我理解与总结。
红黑树节点的删除操作分为两大步骤:
(1)找到删除的节点并且删除它:因为在删除红黑树节点时,往往要删除x,但并不是要删除X那个节点,而是将红黑树的一个适当的节点进行删除,用这个适当的节点的值去填充要删除的x这个值。
(2)节点删除后对红黑树的调整,使其满足红黑树的特有条件。
一。找到删除的节点并且进行删除
首先要了解,(1)如果删除的节点是黑色,且其左右节点都为黑色,要进行节点删除后的调整(双黑操作)。(进行调整是因为要满足红黑树的从某个节点出发其左右子树中的黑色节点数目相等)
(2)如果删除的节点为红色,则直接删除,不会对红黑树结构造成影响不需要进行调整。
删除情况分为3种情况:
在看删除情况时建议先看看博客后面总结的双黑操作
(1)删除点为叶子节点
(1)删除点为红色,直接删除
删除结点0,结点0为红色结点,直接删除即可
(2)删除点为黑色,又因为在红黑树中默认空节点为黑色的,所以要进行双黑操作。
例子1
图21
删除结点18,结点18为叶子结点,且为黑色,删除后出现双黑,属于双黑处理的第一种情况的(2),处理后
图22