最新要闻
- 深圳市北科瑞声科技股份有限公司董事长刘轶:“选定赛道 不断奔跑”|聚焦
- 铁包金和什么煲汤最好?|全球消息
- 日产被前CEO告上法庭 背后故事太刺激:权斗、越狱…
- 最新资讯:抡怎么组词_抡组词精选
- 止咳糖浆致儿童死亡 印尼警方调查本国食品药品监督管理局
- 医院为方便隔绝传染病,要求陪护人员不得中途进出,导致家属长期陪护非常困难
- 瑞丰新材(300910):6月26日北向资金减持20.35万股_世界最新
- 魔岩石怎么获得比较快_魔岩石
- 世界实时:美联储6月议息会议超预期鹰派 对黄金后续走势有何影响?
- 当前速讯:人民银行:5月银行间债券市场现券成交26.2万亿元
- KFM金德(03816)公布年度业绩 拥有人应占年内溢利2266.6万港元 同比扭亏为盈 当前快看
- 世界快播:“低调奢华有内涵,领导必备礼物!教你如何安装弹簧垫圈!”
- 日本核污染水排海倒计时
- 【世界报资讯】新奥股份:子公司签订日常经营重大合同
- 全球热文:万兆宽带都来了 我国“双千兆”网络计划提前完成
- 全国40℃高温让空调卖爆了:消费者从挑挑拣拣到加价买 安装要排队
手机
自动档汽车起动时怎样操作正确_自动档
棠棣之华鄂不譁譁怎么读_棠棣之华-快资讯
- 自动档汽车起动时怎样操作正确_自动档
- 棠棣之华鄂不譁譁怎么读_棠棣之华-快资讯
- 2023年阅读受益股有哪些?(6月26日)-当前聚焦
- 晚安的励志语言_晚安励志语简介介绍
- 人们为什么不爱买钻石了 钻石为何惨遭抛弃 焦点速读
- 壹网壹创(300792):6月26日北向资金增持4.2万股_当前热门
家电
5分钟了解二叉树之红黑树|全球今亮点
转载请注明出处:https://i.cnblogs.com/posts/edit;postId=16032891
书接上一回。上一篇已经讲解到了AVL树,这一篇会接着讲另一个重量级的数据结构:红黑树。
(资料图片)
红黑树
红黑树是一种自平衡二叉搜索树。每个节点存储一个表示“颜色”(“红色”或“黑色”)的额外位,用于确保树在插入和删除期间保持平衡。
从历史上看,红黑树并不是从AVL树推导出来的,而是跟以后会说的B树有关,所以从AVL树看到红黑树可能会有点懵。但是红黑树是AVL树很流行的一个替代数据结构,而且可以通过更小的代价实现与AVL树相近的查找性能。
红黑树是具有下列着色性质的二叉查找树:
- 每一个节点或着色成红色,或者着色成黑色。
- 根是黑色的(维基百科里的条件2是:所有 null 节点都被视为黑色。根是不是黑色影响不大)。
- 如果一个节点是红色的,那么他的子节点必须是黑色的。
- 从一个节点到一个null指针的每条路径必须包含相同数目的黑色节点。
继续讲解红黑树之前,先了解下红黑树的应用场景
广泛的应用
- Linux内核和epoll系统调用实现中使用的完全公平调度器
- Linux内核虚拟内存管理
- C++标准库里的map、multimap、multiset
- Java 中的java.util.TreeMap, java.util.TreeSet
- Java 8 开始用于存储HashMap具有冲突hash码的不同元素
- 网卡数据
也就是说,对于程序员而言,其实已经无时无刻都要跟红黑树打交道了,红黑树对我们的重要性不言而喻,红黑树也是众多数据结构中面试最常见的数据结构之一。
基本操作
前面已经说明了红黑树的定义,从这个定义得到的红黑树高最多是2log(N+1),所以查找操作的时间复杂度可以保证是对数的。困难的点在于如何插入一个新数据。通常把新数据作为叶子节点放到树中,如果该数据涂成黑色,则违反了条件4,因为会建立一条更长的黑节点的路径。因此新数据必须涂成红色。如果他的父节点是黑色的,那么不需要进一步处理;如果父节点已经是红色的,那么违反了条件3,需要调整树确保条件3满足而且条件4不被破坏。完成这样的调整的基本操作是颜色的改变和树的旋转。其中违反条件3称为红色违规(red-violation),违反条件4称为黑色违规(black-violation)。
插入
自底向上的插入
上面提到,如果新插入的数据父节点是红色的,那么插入就完成了。
如果父节点是红色的,那么有几种情形(每种都有一个镜像对称)需要考虑。
1.假设父节点兄弟是黑色的(或者null,因为null也是黑色的)。见下图。X是新添加的叶子节点(扩展到一般情况,X有可能是中间某个节点),P是他的父节点,S是父节点的兄弟节点(叔叔节点),G是祖父节点。G肯定是黑色的,因为P是红色的,相邻父子节点不可能同为红色。我们要做的是想办法把左边多出来的一个红色节点塞到右边的连续黑节点中间。可以通过上面AVL树提到的单旋转和双旋转完成。
图中上部分对应P和G之间的单旋转,下部分对应双旋转。因为子树新根是黑色的,所以即使原来的曾祖父是红色的,也可以满足条件3,并且旋转后通向ABC各子树路径上的黑节点数没有改变,也不会违反条件4。
2.如果父节点的兄弟节点是红色的怎么办?
如果父节点的兄弟节点是红色,父节点和其兄弟节点P和S可以直接涂成黑色,祖父节点G相应地涂成红色来保证条件4。因为任何通过父母或叔叔的路径都必须通过祖父母,因此这些路径上的黑色节点的数量没有改变。但是,如果祖父母G如果有一个红色父母,它现在会违反条件3。把祖父节点G当做是新插入节点X,可以在更高的一个级别(= 2 个树级别)上迭代重新调整,一直到达根为止。这个过程称之为上滤(percolate)。
总结一下,插入操作可以有以下几种场景:
- 当前节点的父节点P是黑色,插入完成
- 如果父节点P和叔叔节点U都是红色的,那么他们都可以涂成黑色,而祖父节点G变成红色。如果祖父节点G有一个红色父节点,N=G,在更高的一个黑色级别(2 层)上迭代重新平衡;直到N是根节点时,结束迭代。
- 父节点P是红色和根,切换P的颜色为黑色,树的黑色高度增加 1。
- 父节点P是红色的,但叔叔U是黑色的,如果N是G的外部孙子节点(P是G左儿子且N是P左儿子,反之亦然),通过单旋转处理;如果N是H的内部孙子节点(P是G左儿子且N是P右儿子,反之亦然),通过双旋转处理。
自顶向下红黑树
上面提到如果新插入节点的父亲节点和叔叔节点都是红色时,需要进行上滤操作。上滤的实现需要用一个栈或用一些父链保存路径。可以通过自顶向下的方法更有效地解决。从树的根节点向下,如果发现有节点X的两个儿子是红色的,则改变自己和两个儿子的颜色,如下图所示
如果X是根节点,则违反了条件2,需要将X改为黑色(也可以不管)。
如果X的父节点是红色的,这会破坏条件3。因为我们是自顶向下的处理方式,X的父节点和叔叔节点不可能同时是红色,所以可以使用上面说的旋转来解决。
删除
删除跟二叉树的删除操作类似,假设N是待删除的节点。
简单情形
1. 如果N是没有子节点的根,则将其替换为 null。
2. 如果N有两个子节点,则找到其右子树最小节点(后继节点)作为替换节点。假设R是这个替换节点,作为子树的最大或最小元素,至多有一个子节点。交换N和R所有与红黑树相关的数据,包括两个节点的颜色和指向和来自两个节点的指针。(修改后的红黑树与之前相同,只是N和R顺序相反,这个问题可以通过删除N立即解决。)现在N最多有一个子节点。
3. 如果N恰好有一个子节点,它一定是红色孩子,因为如果它是黑色孩子,只有一个子节点的N会破坏条件4。
4. 如果N是红色节点,则它不能有子节点,因为根据条件3这必须是黑色的。此外,正如上面所讨论的,它不可能只有一个黑色子节点。因此,红色节点N没有任何子节点,可以简单地删除。
5. 如果N是一个黑色节点,它可能有一个红色的子节点或根本没有子节点。如果N有一个红色的子节点,则在将后者涂成黑色后,将其简单地替换为该子节点。
删除黑色非root叶子节点
6. 如果N不是根节点,颜色是黑色的并且没有子节点。在第一次迭代中,N被替换成null。假设P表示N的父节点,S表示N的兄弟节点,C(表示近侄)表示S与N方向相同的子节点,D(表示远侄)表示S的另一个子节点 (S在第一次迭代中不能是 null,因为它必须有黑色高度1,这是N在删除之前的黑色高度,但C和D可能是null)。
6.1. 案例 1 :P、S和S的孩子都是黑色。在将S涂成红色之后,所有通过S的路径,也就是那些不通过N的路径,都少了一个黑色节点。现在以P为根的子树中的所有路径都有相同数量的黑色节点,但比不通过P的路径少一个,因此仍然会违反条件4,。将P标记为N,在更高的黑色级别(= 1 树级别)上迭代重新平衡,直到当前节点N是新的根,结束迭代,树的黑色高度减 1。
6.2. 案例 2 :兄弟姐妹S是红色的,所以P和侄子C和D必须是黑色的。在P处的单旋转将S变成N的祖父母。然后在翻转P和S的颜色后,通过N的路径仍然短一个黑色节点。但是N现在有了一个红色的父节点P和一个黑色的兄弟S。
6.3. 案例 3 :兄弟节点S和S的孩子是黑色的,但P是红色的。交换S和P的颜色,交换后经过S的路径上的黑色节点的数量不变,经过N的路径上的黑色节点的数量上加一,从而弥补这些路径上已删除的黑色节点。
6.4. 案例 4 :兄弟节点S是黑色的,S的亲近孩子C是红色,S的远亲孩子D是黑色。在S的一个单旋转之后,侄子C成为S的父母和N的新兄弟。交换S和C的颜色。所有路径仍然有相同数量的黑色节点,但现在N有了一个黑色兄弟,其远方的孩子是红色的。N及其父P都不受这种转换的影响,并且P可能是红色或黑色。
6.5. 案例 5 :兄弟姐妹S是黑色的,S的远亲孩子D是红色的。在P处单旋转后,兄弟S成为P和S的远亲孩子D的父母。P和S的颜色互换,D变成黑色。子树在其根部变换前后的颜色相同。变换后符合条件3。子树中的路径不经过N(在图中通过D和节点3)通过与以前相同数量的黑色节点,但N现在有一个额外的黑色祖先:要么P变成黑色,要么它是黑色的并且S被添加为黑色祖父母.这样,经过N的路径又加上了一个额外的黑色节点,因此条件4被恢复。
引用:
《数据结构与算法分析——C++语言描述(第四版)》
https://en.wikipedia.org/wiki/Red%E2%80%93black_tree
https://www.bilibili.com/video/BV1hp4y1B7Uf/
https://developpaper.com/understand-the-origin-of-red-black-tree-and-understand-the-essence-of-red-black-tree/
关键词:
-
《安富莱嵌入式周报》第316期:垂直降落火箭模型,超低噪声测量,开源电流探头,吸尘器BLDC,绕过TrustZone,提高频率计精度,CMSIS V6.0文档
周报汇总地址:http: www armbbs cn forum php?mod=forumdisplay&fid=
来源: 5分钟了解二叉树之红黑树|全球今亮点
深圳市北科瑞声科技股份有限公司董事长刘轶:“选定赛道 不断奔跑”|聚焦
基于DSP的设备振动信号的采集和处理模块研发总结
《安富莱嵌入式周报》第316期:垂直降落火箭模型,超低噪声测量,开源电流探头,吸尘器BLDC,绕过TrustZone,提高频率计精度,CMSIS V6.0文档
焦点热议:汉中市社保局官网查询系统_汉中市社保局官网
天天新动态:江苏省徐州市泉山区市场监管局发布2023年第4期食品安全监督抽检信息
腹直肌分离3指可以自己恢复吗_腹直肌可以自己恢复吗
老铁,快手说房天团齐打call!“快乐郑州 快乐购”优选官惊喜亮相_天天亮点
外媒称《星空》空战内容可玩性高 值得《命运2》借鉴
RTX 4060桌面版跑分曝光:看着有点甜,刀法依旧准
铁包金和什么煲汤最好?|全球消息
日产被前CEO告上法庭 背后故事太刺激:权斗、越狱…
炒熟的肉在冰箱能放几天
东方神起举办2023年日本全国巡演盛况空前 在东京巨蛋华丽收尾!
自动档汽车起动时怎样操作正确_自动档
全球微速讯:银川公安联合社区开展防范养老诈骗知识宣传 守护老人养老钱
棠棣之华鄂不譁譁怎么读_棠棣之华-快资讯
湖北举办“6·26”国际禁毒日主题宣传活动-环球微资讯
青岛启动大规模公交线路优化调整,近期将分批次向社会公示_即时
微信回了个“OK”表情手势,他成了被告……|全球焦点
全球产业趋势周报:机器人有望成为大模型终极载体,顶层设计推动医保数据共享 环球快看点
长春消防运动会:比拼“速度与技术”
中铁房地产集团设计咨询公司组织开展工程设计项目专题法律合规培训
注意!近期快速升温,多雷阵雨!
鉴赏145平新中式淡雅轻奢广东超本建材帝品居全屋整装
视焦点讯!沙金和黄金怎样才能分辨出来(沙金和黄金有什么区别)
重磅!填报志愿“神器”来了-环球热资讯
焦点简讯:6月28日通车!南京全新地铁开通在即,隔壁城市羡慕坏了!
2023年阅读受益股有哪些?(6月26日)-当前聚焦
【全球时快讯】市领导巡视2023年中招考试情况
世界新消息丨个人中小客车增量指标申请查询_个人中小客车增量指标
2023粤港澳车展:问界M5智驾版全国首批交付
最新资讯:抡怎么组词_抡组词精选
“去风险”?外企高管反对“虚幻的担忧” 天天新动态
直播购物平台初创公司【BOND】完成200万美元种子轮融资,Nordstar领投|天天通讯
止咳糖浆致儿童死亡 印尼警方调查本国食品药品监督管理局
“去风险”?外企高管反对“虚幻的担忧”|环球看热讯
红旗连锁斥资2亿元购买理财产品_环球快讯
【世界独家】用水量怎么计算
却顾所来径,苍苍横翠微的意思_却顾所来径 苍苍横翠微什么意思简介介绍|每日讯息
天天速递!涨停复盘:成交额跌破万亿,超4000只个股下跌!35股涨停,2股3连板!高温天气引关注,热电及虚拟电厂“电力十足”
晚安的励志语言_晚安励志语简介介绍
带花古诗的诗句有哪些 带有花字的古诗 当前关注
海贼王中最般配的一对CP是谁?有一对确定的CP未来会结婚!
焦点资讯:经典穿越种田文完结小说排行榜 推文10本穿越种田小说
最值得看的10部美剧_40多部好看的美剧_世界简讯
帅农鸟哥是什么梗-焦点速讯
焦点资讯:有理数的加减混合运算_对于有理数的加减混合运算简单介绍
环球最资讯丨《暗黑破坏神4》布蕾嘉的编年史任务怎么做 布蕾嘉的编年史任务攻略
天天看点:我国拟立法保障粮食安全
人们为什么不爱买钻石了 钻石为何惨遭抛弃 焦点速读
【天天新视野】保定市莲池区人民法院_保定市莲池区
全球短讯!斯坦福训练Transformer替代模型:1.7亿参数,能除偏、可控可解释性强
中国中铁拟发行30亿中票 用于偿债及补充流动资金
先成家后立业的好处_先成家后立业
【焦点热闻】雪峰科技(603227.SH):拟将沙雅雪峰100%股权按照500万元划转至雪峰爆破
全国芒果专家研讨科技助农兴农 环球资讯
棉花苗情大好转!新疆实地调研,最新情况→
牧高笛:融资净偿还153.1万元,融资余额4870万元(06-26)
官方win11哪个版本最精简_世界热文
胡锡进宣布进入A股 李大霄提建议:先买基金再买股票
世界实时:交易异动!新中港:近3个交易日上涨17.79% 无未披露的重大信息
环球报道:蓄力蓝天赛道,江苏“翼”起奋飞
环球速读:晋拓股份:股票交易异常波动 无未披露的重大信息
医院为方便隔绝传染病,要求陪护人员不得中途进出,导致家属长期陪护非常困难
基金投顾新规征求意见 三大领域广获券商建言_环球关注
【天天热闻】《消失的她》猫眼预测票房33亿,陈思诚又拿捏了“流量密码”
电从海上来!全球首台超大容量16兆瓦风机叶片开始吊装
北海有哪些好吃的甜品店可以推荐? 世界观察
天气炎热+LNG出口前景看好 美国天然气价格周一升至近四个月来最高水平
小菌菇释放大“蘑”力 ——写在中国·蓬溪第二十二届全国食用菌新产品新技术博览会开幕之际
国泰君安:新型电力系统叠加能源转型机遇期,电力商业模式有望出现实质性变革
泪目!这张毕业照,只有1人不用马赛克……-世界头条
中考首日 考生提笔逐梦
狐大医·读新闻 | 你娃有“考后综合征”吗?考后状态自查指南请查收
瑞丰新材(300910):6月26日北向资金减持20.35万股_世界最新
玩嗨啦!17项活动、13条线路激活阜新市夏季旅游市场_观天下
沈阳出台22个科技创新政策配套实施细则
魔岩石怎么获得比较快_魔岩石
壹网壹创(300792):6月26日北向资金增持4.2万股_当前热门
世界快资讯丨抢购开始?英媒:奥斯梅恩标价1.3亿镑,蓝军考虑中&红军红魔加入
昊华能源: 公司定期报告已对股东人数进行披露,请查阅公司定期报告 世界微头条
民航局整治航班靠桥率:旅客减少坐摆渡车,机务吐槽负担加大 世界短讯
提前34天!今年全国快递业务量已达600亿件_全球百事通
【独家】官方回应!西城一片区有腾退计划但尚未实施!还有一片区腾退计划在加紧中!
ST实达(600734):技术指标出现看涨信号-KDJ 低位金叉(06-26)
港考虑微调首套房按揭_环球信息
6月26日英派斯发布公告,其股东减持94.3万股_环球今亮点
女人胸长什么样子(女人的乳房都有什么形状)
走进新洲一中考生方立航:最大的超越来自自我突破 天天速递
当前快报:2023全球汽车零部件供应商百强榜:13家中国企业上榜 宁德时代排名第五
鹤峰屏山峡谷:诗与远方入画来
星历0626:金牛感情运势稳定 水瓶防止意外伤害-天天速讯
中国中冶拟定增募资不超150亿元 全部补充流动资金
光大证券:市场存量博弈明显 配置思路应聚焦拥挤度低、景气回升方向 环球短讯
当前速看:2023石家庄国际啤酒节开幕
盒马鲜生最快11月完成分拆上市?官方回应:不予置评 世界速递
五经普 | @所有人,经济普查的干货来了,请查收!
杨子陪妈妈扮公主圆梦 网友:孝亲敬老的样子,真帅!
拧紧“安全阀”,南京江宁市场监管开展液化石油气充装安全检查 世界视点