红黑树--删除

红黑树--插入:https://blog.csdn.net/weixin_51066286/article/details/119006071

必备知识:

        1.树的右旋和左旋

        2.二叉树

        3.前继结点和后继结点

仅供参考

我们直接来看,删除分有哪几种情况

删除情况:

        1 删除的是末端的红色结点,可以直接删除

        2 删除的是末端的黑色右结点

                2.1 父结点是黑色,兄弟结点为黑色

                        2.1.1 将兄弟左结点改为黑色,并将父结点右旋

                2.2 父结点红色,兄弟结点为黑色

                        2.2.1 兄弟结点的左结点若为红色,则将兄弟结点下的左结点和父结点与兄弟结点颜色互换,再将父结点右旋

                        2.2.2 兄弟结点只有右结点且红色,则将兄弟结点和兄弟结点右结点颜色互换并将兄弟结点左旋

                                2.2.2.1 旋转后的情况符合情景2.2.1,执行2.2.1操作

                2.3 父结点是黑色,兄弟结点为红色,将兄弟结点和父结点颜色互换,并将父结点进行右旋

                        2.3.1 旋转后的兄弟结点没有子结点,则将父结点和兄弟结点颜色互换

                        2.3.2 旋转后的兄弟结点只有右结点,则将兄弟结点和兄弟结点右结点颜色互换并将兄弟结点左旋

                                2.3.2.1 旋转后的情况符合2.2.1情景,执行2.2.1操作        

                        2.3.3 旋转后的兄弟结点下的左结点若为红色,执行2.2.1操作

       3 删除的是末端的黑色左结点(与2情况一样只不过操作方向都相反而已)

        4 删除的不是末端的结点

                4.1 找出前继结点(或者后继结点)

                4.2 然后用前继结点(或者后继结点)代替要删除的结点

                4.3 要删除的结点是什么颜色,代替结点就是什么颜色

                4.4 然后删除前继结点(或者后继结点),本质上是结末端的结点 进行删除,然后回到2步骤

 注意:在这里强调一点是,不管是旋转前再互换颜色,都要明确要对哪个结点和哪个结点颜色进行互换。 


 

我们拿一个图来说明一些概念

下面我们来挨个演示以上的删除情景 

1 删除的是末端的红色结点,可以直接删除

2 删除的是末端的黑色右结点

1 父结点是黑色,兄弟结点为黑色

2.2 父结点红色,兄弟结点为黑色

2.2.1 兄弟结点的左结点若为红色,则将兄弟结点下的左结点和父结点与兄弟结点颜色互换,再将父结点右旋

 

 注意:在这里强调一点是,不管是旋转前还是互换颜色后,都要明确要对哪个结点和哪个结点颜色进行互换。下面不再强调。

2.2.2 兄弟结点只有右结点且红色,则将兄弟结点和兄弟结点右结点颜色互换并将兄弟结点左旋

 2.3 父结点是黑色,兄弟结点为红色,将兄弟结点和父结点颜色互换,并将父结点进行右旋

         2.3.1 旋转后的兄弟结点没有子结点,则将父结点和兄弟结点颜色互换

            2.3.2 旋转后的兄弟结点只有右结点,则将兄弟结点和兄弟结点右结点颜色互换并将兄弟结点左旋

                   2.3.2.1 旋转后的情况符合2.2.1情景,执行2.2.1操作  

 

2.3.3 旋转后的兄弟结点下的左结点若为红色,执行2.2.1操作 

   4 删除的不是末端的结点

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值