标签:class https 数据 ddn 分享 有一个 inf image case
目录
红黑树,是一种平衡的《二叉查找树》。
红黑树图示如下:
性质:
PS:空结点只是作为辅助使用,并不包含数据。
插入和删除时,为了继续保持红黑树的性质,对树进行旋转并重新着色。
下面是树的左旋与右旋图示:
【红父红叔】
重新着色:黑父黑叔红祖父,如果祖父结点的父结点还是红色,那么就又是一个双红问题。
【红父黑叔】
乍一看,天然的红父黑叔是不存在的。
但是上述红父红叔问题可能转化为双红情况,这时就可能出现黑叔。
两种情况:
【情况一:删除结点为叶结点】
【情况二:删除结点只有一个子结点】
该结点为黑色(不可能为红色),其子结点为红色,子结点替代该结点位置颜色变黑。
【情况三:删除结点有两个子结点】
参考《二叉查找树》,相当于最左结点与被删结点交换了值,然后再删除最左结点,最左结点是叶结点,因此又回到了情况一。
下面重点探讨情况一中,叶结点为黑色的情况。
case1:红兄(黑父两黑侄是必然的)
case2:黑兄左红侄右黑侄
case3:黑兄右红侄
case4:黑兄两黑侄红父
父染黑,兄染红,删除结点。
case5:黑兄两黑侄黑父
要想删除结点之后平衡,将兄染红。
但是此时,通过父结点的路径上的黑色结点比不通过...少了1个,因此需要从 case1 开始,对父结点重新平衡处理。
标签:class https 数据 ddn 分享 有一个 inf image case
原文地址:https://www.cnblogs.com/xmsx/p/9749004.html