山竹来了,赶快抱紧这棵 “大树”

2024-01-25 08:59

本文主要是介绍山竹来了,赶快抱紧这棵 “大树”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

红黑树的概述:

红黑树本质上是一种二叉查找树,但它在二叉查找树的基础上额外添加了一个标记(颜色),同时具有一定的规则。这些规则使红黑树保证了一种平衡,插入、删除、查找的最坏时间复杂度都为 O(logn)。

红黑树的性质:

1、每个节点要么是红色,要么是黑色;  

2、根节点永远是黑色的;  

3、所有的叶节点都是是黑色的(注意这里说叶子节点其实是上图中的 NIL 节点);  

4、每个红色节点的两个子节点一定都是黑色;  

5、从任一节点到其子树中每个叶子节点的路径都包含相同数量的黑色节点。  

红黑树的旋转

左旋:将一个向右倾斜的红色链接旋转为向左链接。对比操作前后,可以看出,该操作实际上是将红线链接的两个节点中的一个较大的节点移动到根节点上。  

右旋:与左旋刚好相反,这里就不赘述了,直接看图。

红黑树的插入与调整

因为要满足红黑树的这五条性质,如果我们插入的是黑色节点,那就违反了性质五,需要进行大规模调整;如果我们插入的是红色节点,那就只有在要插入节点的父节点也是红色的时候违反性质四或者当插入的节点是根节点时,违反性质二,所以,我们把要插入的节点的颜色变成红色。

不需要调整的情况:  

1、当插入的节点是根节点时,直接涂黑即可;   

2、当要插入的节点的父节点是黑色的时候,这个时候插入一个红色的节点并没有对这五个性质产生破坏。所以直接插入不用在进行调整操作。

需要调整的情况:即插入节点的父结点也是红色。

因为左右对称的缘故,在此只讨论父结点位于祖父节点的左支的情况(N 为插入节点):

1、叔叔节点是红色

这时候只进行换色操作:将父结点和叔叔节点涂成黑色,祖父节点涂成红色。

2、叔叔节点是黑色,插入节点位于父节点的右支

这时候需要将父结点当成新的插入节点,并以他为支点进行左旋操作,进入情况3 。

3、叔叔节点是黑色,插入节点位于父结点的左支

这时候需要先进行换色操作:将父结点涂成黑色,祖父节点涂成红色;然后进行右旋操作。

红黑树的删除与调整

如果被删除结点有孩子,则需要选一个合适的孩子节点作为新的根节点,称为当前节点。  

1、只有左孩子或只有右孩子,则让该孩子作为当前节点替代被删除结点;  

2、左右孩子均存在,则用被删除结点的中序后继结点作为当前节点替代被删除结点。

注意:替代只是**值的互换,颜色不变**。

即:当前节点是黑色,被删除结点是红色。替换后,当前节点位于被删除结点的位置,是红色;被删除结点位于当前节点原来的位置,是黑色。

不需要调整的情况:  

1、被删除结点的是红色的;  

2、被删除结点只有一个孩子,用孩子的值替换被删除节点,删除孩子结点。

需要调整的情况:(被删除节点为黑色)  

因为左右对称的缘故,在此只讨论父结点位于祖父节点的左支的情况:

1、兄弟节点为红色  

这时候需要互换父结点和兄弟节点的颜色,并进行左旋操作。

2、兄弟节点为黑色,且其左右孩子也为黑色  

将兄弟节点涂成红色,再将父结点当成新的被删除结点(只是当成,并不删除)进行一次调整(右图中少了根节点的左孩子被删除元素)。

3、兄弟节点为黑色,且其左孩子为红色  

先换色:左孩子涂成黑色,兄弟节点涂成红色;再以兄弟节点为支点右旋。变成情况4 。

4、兄弟节点为黑色,且其右孩子为红色  

先换色:父结点的颜色赋给兄弟节点,父结点涂成黑色,兄弟节点的右孩子涂成黑色;再左旋(右图中a 的左孩子是被删除元素)。

红黑树的查找

与二叉排序树的查找一样:从根节点出发,待找值较大时往右子树方向查找,待找值较小时往左子树方向查找,直到找到匹配的结点。若找不到则查找失败。

红黑树的应用

Epoll 实现、Java集合中的 TreeSet 和 TreeMap、C++ STL 中的 set、map,以及 Linux 虚拟内存的管理,都是通过红黑树去实现的。  

在平时也可以应用于各种管理系统的查找算法中,借此提高效率。

在线生成红黑树(含变形步骤)

看完本教程,如果你还不太能清楚的写出红黑树的构造过程,那么,这一个网站将能很好地帮助到你。它不仅支持手动输入结点值,也能随机生成结点,更重要的是,该网站把每一次插入、删除的调整步骤都展现了出来。赶紧试试吧!

https://sandbox.runjs.cn/show/2nngvn8w

这篇关于山竹来了,赶快抱紧这棵 “大树”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642766

相关文章

万能的开题答辩稿,赶快收藏吧

#万能的开题答辩稿,赶快收藏吧 尊敬的评委老师们: 大家好!我是XXX,XXX学院XXX专业的一名学生。今天非常荣幸能够在这里向各位展示我的毕业设计开题报告。我的毕业设计题目是《XXX系统》。 选题背景和意义 介绍选题的背景和选题的原因,阐明开发该管理系统的重要性和现实意义。可以包括介绍相关的背景信息、问题存在的现状以及解决这些问题的需求 目标与任务 目标:(明确系统的主要目标) 提供一个方便

山东济南比较出名的起名大师的老师,中国最厉害的改名大师颜廷利:短命的小草,年年自损;长寿的大树,万古长青。。。(升命学说)

在中国第一起名大师的老师颜廷利教授的《升命学说》中,通过“净化论”、“和合法则”、“唯悟主义”以及“镜正理念”的阐述,我们得以窥见生命的不同维度。他以自然界中短命的小草与长寿的大树为例,揭示了生命形态的对比与哲理。 小草,虽具有顽强的生命力,能在极端环境中迅速生长,却每年都需经历生死轮回,这象征着生命的短暂与脆弱。相比之下,大树根深叶茂,历经漫长岁月仍屹立不倒,展现了坚韧与永恒的生命力。 这一

10款必备软件,每款都是神器,赶快用起来吧!

AI视频生成:小说文案智能分镜+智能识别角色和场景+批量Ai绘图+自动配音添加音乐+一键合成视频https://aitools.jurilu.com/最近有很多小伙伴在咨询,我也抓紧时间整理了一些不错的软件和我陆续收到的,希望对大家有所帮助。 1. 全球鼠标——MouseInc   MouseInc是shuax出品的一款全局鼠标软件,还支持许多增强的辅助功能,如屏幕颜色、窗口管理、音量控制等。

2022年微信红包封面,赶快抢呀~

2021年就要过去啦,大家是不是在准备迎接新的一年呢?新年新气象,小白这就分享给大家新出炉的微信红包封面!有了新的封面,给小伙伴发红包时是不是倍儿有面子? 福利来袭,先到先得,大家抓紧抢数量有限的微信红包封面呀! 12月24日-12月31日,每日10:00 12月24日分三轮发放: 18:10、19:00、1

山竹来了怎么保障技术资产?No.113

山竹有什么特征? 山竹果肉雪白嫩软,味清甜甘香,带微酸性凉,润滑可口,解乏止渴,生发补身,为热带果树中珍品,有果后之称。 说的是台风山竹。。。最大风力达到15级,阿弥陀佛。 那怎么破? 提前搜集台风相关消息,评估台风可能到达的量级,这叫流量预估。 在台风过程中持续观察台风等级以及影响范围,这叫服务监控。 提前下楼去买啤酒饮料花生米,这叫资源准备。 在窗上贴个米,这叫从架构上

赶快收藏,番茄小说推文授权实操教程来袭

小说推文,一个不用拍摄出镜、不用直播,利用空闲时间,即可操作的低门槛项目,普通人无论是把他当作主业还是副业都是不二选择。而在这个产业中,目前最受欢迎的毫无疑问是高佣稳定的“番茄小说”。 然而,很多人都很好奇,想赚这笔钱的话,该怎么做呢?也就是番茄小说里的内容,如何申请授权呢?毕竟如果不拿到授权就直接推文,可能会因为侵权问题致视频下架,最后竹篮打水一场空。 使用“蜂小推”获取番茄小说授权,保姆级

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们,令人振奋的消息来啦!本月,我们特地为大家准备了一份特别的粉丝福利!只要您轻轻一点,关注我们的公众号,就有机会抽取现金红包,让您的生活多一份惊喜与喜悦! 是的,您没有听错,这确实是真金白银的现金红包! 还等什么?点击链接快来参与吧!

还不会免费将PDF转为Word?赶快试试这3种工具!

PDF文档格式转换是高频且刚需的办公需求,虽然很简单,但其实绝大部分人找不到合适的工具。 将PDF免费转为Word的方法有很多,这里主要介绍三种工具。 第一种使用最常见的Word软件,第二种使用免费转换网站pdf2doc,第三种使用Python脚本。 前两种方法适合单个或少量PDF的转换,最后一种用于批量PDF的转换。 我用一本100多页的PDF电子书做了测试,将其转化为Word,三种方法

小程序测试的几个小Tips(赶快收藏啦!)

微信小程序备受很多人的关注,它的商业化进程也越来越快,随着微信官方公布的相关数据显示,85%的小程序和电商有关。电商巨头京东推出了不少小程序,例如“京东商城”,“京东手机”,“京东购物”,”京东众筹”,“哈希庄园”,“场馆预订”等。 下面就和大家一起分享下测试小程序与Web端的一些区别。 1. 小程序类型 小程序分为三种版本类型:开发版,体验版,正式版。开发版和体验版无需审核,需要给微

[阿里巴巴2015校园招聘]写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。 .

写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。