红黑树的添加和删除逻辑,简易图解版

(1)教学来源,抛开具体的代码,讲清楚原理,这位b站老师,讲的非常好。理论干货,最棒的

以下算是对这位老师讲课的 一些笔记总结。
(2)红黑树的增加节点:
红黑树的添加和删除逻辑,简易图解版_第1张图片
(3)红黑树的删除节点
红黑树的添加和删除逻辑,简易图解版_第2张图片
红黑树的添加和删除逻辑,简易图解版_第3张图片
红黑树的添加和删除逻辑,简易图解版_第4张图片
红黑树的添加和删除逻辑,简易图解版_第5张图片
红黑树的添加和删除逻辑,简易图解版_第6张图片
红黑树的添加和删除逻辑,简易图解版_第7张图片
还有人说那搞不懂那网上,看大家写的东西,好像也也运行也都没问题啊。
实际上咱们网上很多那个东西啊,他根本就不对了,写错了。有的是有缺陷有的根本性的就写错了。
那为啥还没有什么,还没有没有没有崩溃呢?这就是因为这红黑树他有一个很很很好的性质他就是高度稳定性。就哪怕你写错了,他也不会有什么大错,他就可以带病带伤运行。
就比如你写错了又怎么样呢?你把两个红结点连着连着就连着呗。连着他他能死人吗?你违背了红黑树性质,我就违背了又怎么样啊?你只要不是写的太过分,他那个排序的那个东西还是你2X排序,这个顺序还保持着呢。那他查找也不会出错,就是慢点可能。
就你这个红黑树他是病态的畸形的,但是呢,要不是拿那种很很专门攻击你的数据,去对你的数进行访问,你也不至于进行到哪去,就是带着病运行。像他这样有有很多。工作环境中生产环境中,我我发现也有带病运行的,但,他没问题。
哎所以说,咱咱网上有些东西啊他那有缺陷或,者是写错了呢,你还一时半会还找不到,还看不出来,表现不出来。
哎是因为你不可能说,每次都把这红运数字全屏画一个图。就算你能画一个图,他里面有一个不平衡的错误,你能看出来吗?这个是不不好查的。
所以我们这个东西一定要谨慎。这个确实很复杂。这个删除确实很复杂,所以咱们今天呢还是由易到难。
红黑树的添加和删除逻辑,简易图解版_第8张图片
红黑树的添加和删除逻辑,简易图解版_第9张图片
红黑树的添加和删除逻辑,简易图解版_第10张图片
在这里插入图片描述
红黑树的添加和删除逻辑,简易图解版_第11张图片
红黑树的添加和删除逻辑,简易图解版_第12张图片
红黑树的添加和删除逻辑,简易图解版_第13张图片
那有人就有就就经常有各种想法说:他的侄子是不是一定存在呀,万一他要是空节点呢?那下边就没有这23了。
哎这个问题呢,你可以这么想,我是什么颜色?我肯定得是黑色,为什么?因为我是发什么申请啊,我是向上级发出我欠高的申请,说明我们这个家族欠高。那如果我都是红的,我还欠高,那我为什么不自己调成黑的呢?那对我家族的平衡没有影响,并且我的黑高也满足了那多好呀。所以我一定是黑的。
那么既然我是黑的我就欠高,说明我这边的高至少是2,那哥哥这边至少是2。所以他的两个侄子是一定存在的。这个不用怀疑。
红黑树的添加和删除逻辑,简易图解版_第14张图片
红黑树的添加和删除逻辑,简易图解版_第15张图片
红黑树的添加和删除逻辑,简易图解版_第16张图片

红黑树的添加和删除逻辑,简易图解版_第17张图片

红黑树的添加和删除逻辑,简易图解版_第18张图片
红黑树的添加和删除逻辑,简易图解版_第19张图片
通过这六种情况,汇总了,不重不漏的节点删除。可以以此编写代码,阅读源码了。谢谢这位b站老师。
(4)以上是对左子树欠高的讨论。其实左右子树是对称的,右子树也可能欠高,需要从左子树借节点。下面补充各种情况的图解版:
我们先附上大纲:
红黑树的添加和删除逻辑,简易图解版_第20张图片
红黑树的添加和删除逻辑,简易图解版_第21张图片
红黑树的添加和删除逻辑,简易图解版_第22张图片
红黑树的添加和删除逻辑,简易图解版_第23张图片
红黑树的添加和删除逻辑,简易图解版_第24张图片
红黑树的添加和删除逻辑,简易图解版_第25张图片

谢谢老师和前辈的讲解。谢谢

你可能感兴趣的:(数据结构c/c++描述,数据结构,b树)