红黑树删除详细图解,巨详细

红黑树的生成网址点我

写在前面

图片的X 代变 删除的节点
B 代表他的兄节点
P代表父亲节点
蓝色代表随便颜色未知可能是红色也可能是黑色

删除的概念

首先红黑树的删除,与正常的二叉查找树的删除一样,首先查找到要删除的点,
找出其前继节点(左边树最大的)或是后继节点(右边树最小的)进行值的替换,再将其删除(前继节点和后继节点肯定都是叶子节点,所以可以直接进行删除)。然后,通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。

情况1删除的节点是叶子节点

情况1.1叶子节点是红色

在这里插入图片描述

解决方案: 直接删除毫无影响
删除后的情况:
在这里插入图片描述

情况1.2叶子节点是黑色

以下情况按我写出的顺序进行处理 有优先级的

情况1.2.1兄黑,右红侄

解决方案:
1:左旋其父
2:祖染父色
3:父叔染黑
4:删除节点
在这里插入图片描述

情况1.2.2兄黑,左红侄

进入这个情况,证明右侄子节点是肯定没有的,有的话则是第一种情况
解决方案:
1:右旋其兄
2:兄侄换色
3:回到情况1
在这里插入图片描述

情况1.2.3兄黑,双黑侄

其实就是兄弟也是叶子节点,因为不可能有了不然黑色不平衡了
解决方案:
1:兄弟染红
2:递归往上走,遇到红色染黑或是遇到根节点返回
3:删除节点
在这里插入图片描述

情况1.2.4 兄红

解决方案:
1:左旋其父
2:父祖换色
3:转换成前三种情况
在这里插入图片描述

情况2删除的节点有孩子节点

2.1只有左孩子

解决方案:
1:直接删除提上去替父从军
在这里插入图片描述

2.2只有右孩子

解决方案
1:替父从军
在这里插入图片描述

2.3有两个孩子

解决方案:
1:与前继节点或是后继节点进行替换
2:以前继节点或是后继节点为操作节点按前面情况进行删除
在这里插入图片描述

  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值