网站首页 > 技术文章 正文
01
删除
如何将结点从红黑树中删除?三步骤:
1、将红黑树当成一棵二叉搜索树,删除;
2、通过旋转和重新着色,使其满足红黑树的性质。
首先,这棵树本身是一棵自平衡二叉搜索树,删除结点后不改变二叉搜索树的事实,不论是左旋、右旋还是着色,也不改变这个事实;
其次,通过一系列的旋转和重新着色,使新树满足红黑树的所有性质,重新成为一棵红黑树。
第一步:将红黑树当成一棵二叉搜索树,将结点删除:
- 如果被删除结点没有儿子,即为叶子结点,直接删除即可;
- 如果被删除结点有一个儿子,删除该结点,其子结点顶替即可;
- 如果被删除结点有两个儿子,则有两种方法,一种是用前驱即左子树的最右结点顶替,一种是用后继即右子树的最左结点顶替。如果前驱、后继没有儿子,删除它们用上面的第1点处理。如果前驱、后继有一个儿子,删除它们用上面的第2点处理。
设X是顶替的结点,以下X:“红+黑”表示顶替结点为红色、被删除结点为黑色,X:“黑+黑”表示顶替结点和被删除结点均为黑色。
第二步:通过旋转和重新着色,使其满足红黑树的性质:
- X:“红+黑”,此时直接将红色顶替结点置黑,即完成;
- X:“黑+黑”,且被删除结点为根结点,此时不须做任何处理,即完成;
- X:“黑+黑”,且被删除结点不为根结点,分为以下4种情况。
1
X是"黑+黑"结点,X的兄弟结点是红色,X的父结点和X的兄弟结点的子结点都是黑色结点
1) 将x的兄弟结点设为“黑色”。
2) 将x的父结点设为“红色”。
3) 对x的父结点进行左旋。
4) 左旋后,重新设置x的兄弟结点。
2
X是“黑+黑”结点,x的兄弟结点是黑色,x的兄弟结点的两个孩子都是黑色。
1) 将x的兄弟结点设为“红色”。
2) 设置“x的父结点”为“新的x结点”。
3
X是“黑+黑”结点,X的兄弟结点是黑色,X的兄弟结点的左孩子是红色,右孩子是黑色。
1) 将x兄弟结点的左孩子设为“黑色”。
2) 将x兄弟结点设为“红色”。
3) 对x的兄弟结点进行右旋。
4) 右旋后,重新设置x的兄弟结点。
4
X是“黑+黑”结点,X的兄弟结点是黑色;X的兄弟结点的右孩子是红色,X的兄弟结点的左孩子任意颜色。
1) 将x父结点颜色 赋值给 x的兄弟结点。
2) 将x父结点设为“黑色”。
3) 将x兄弟结点的右子结点设为“黑色”。
4) 对x的父结点进行左旋。
5) 设置“x”为“根结点”。
至此,红黑树的讲解告一段落……
注:凡属于本公众号内容,未经允许不得私自转载,否则将依法追究侵权责任。
猜你喜欢
- 2024-10-25 《王牌部队》高粱拿了“喜剧人”剧本,笑点泪点都被他承包了
- 2024-10-25 纯爱小说推荐|生活所迫,我只能把你的后宫变成我的兄弟了
- 2024-10-25 占星秒懂|宫位的形成与解析(下) 宫位意思
- 2024-10-25 农村兄弟建双拼更有气势还省钱,2020年超受欢迎的双拼户型分享
- 2024-10-25 我爸说,“你没有结婚,我在村子里比做贼还丢人!”
- 2024-10-25 IT兄弟连 HTML5教程 CSS3揭秘 CSS3概述
- 2024-10-25 通过css类/选择器选取元素 文档结构和遍历 元素树的文档
- 2024-10-25 琅琊榜:兄弟之情,远比男女之情更加动人
- 2024-10-25 参加兄弟婚礼祝福语 参加兄弟婚礼祝福语简短
- 2024-10-25 兄弟姐妹之间,关系潜规则:疏离又亲近!很微妙
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)