红黑树 删除调整步骤终极详解

       上一篇讲了插入调整,现在来讲删除调整。红黑树的删除无疑是最难的,抛开调整,红黑树的插入删除都跟选择二叉树一样,所以前面的步骤网上很多了,在这里只讲如何调整,以满足红黑树性质。

       还是从头到尾理一下吧...

       先定义一下,删除节点为d,真实删除节点为reald,顶替节点为x,x的兄弟节点即前reald的兄弟节点为w。

       找到要删除的节点d。

        1.若d有一个子节点,则直接用d的子节点x顶替d以达到删除的目的。此时reald就是d。

        2.若没有子节点,则直接用x(此时x为空节点)顶替d。此时reald就是d。

        3.若有两个子节点,则寻找d的前驱或者后继reald(也是就是d的左子树下最大的节点或者右子树下最小的节点)。将后继节点reald的值赋给d,并删除reald(用reald的子节点x顶替reald)

         上面就是选择二叉树的删除方法,红黑树的话只是多一步调整步骤。

 

        删除后调整以满足红黑树性质

         若真实删除的节点reald为红色,那么删除后对红黑树性质没有影响,则不用调整。

          若reald为黑色

          循环条件(顶替节点x不为root,且x的颜色为黑),跳出循环后记得将x颜色赋为黑!

          1.如果顶替节点x为红色,则将x变为黑色,调整结束。

           2.若顶替节x点为黑色

                case1 若x的兄弟节点为红色(因为x顶替了reald,也就是原reald的兄弟节点为红)

               =》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值