漫画算法:5分钟搞明白红黑树到底是什么?
注:本期二叉树部分图片和思想源自公众号:程序员小灰
---正文---
下面为标准的二叉排序树
初始状态
其实想要搜索值为226的节点很简单,搜索动画过程如下:
这样不行!
这是个病!
得治!
红黑树就是一种平衡的二叉查找树,说他平衡的意思是他不会变成“瘸子”,左腿特别长或者右腿特别长。除了符合二叉查找树的特性之外,还具体下列的特性:
1. 节点是红色或者黑色
2. 根节点是黑色
3. 每个叶子的节点都是黑色的空节点(NULL)
4. 每个红色节点的两个子节点都是黑色的。
5. 从任意节点到其每个叶子的所有路径都包含相同的黑色节点。
下面为标准的红黑树,阿广建议大家对照下面的图理解上边写的红黑树的性质哦~
(黑色的NULL节点可忽略)
例如上面标准的红黑树,插入值为12的节点。
插入之后发现仍然满足红黑树的要求!
但是如果插入值为21的节点呢?
如下图所示
先来看一下变色!
为了符合红黑树的规则,会把节点红变黑或者黑变红。下图展示的是红黑树的部分,需要注意节点25并非根节点。因为21和22链接出现红色,不符合规则4,所以把22红变黑:
但这样还是不符合规则5,所以需要把25黑变红,看下图:
接下来先讲一下什么是左旋转!通过动画举个例子吧!
左旋转思想示意图如下
通俗点讲一下,可以看下面的左旋转静态示意图
按照左旋转,对上边已经变色完成之后图进行左旋转。
可见右旋转的思想总结如下:
通俗点讲一下,可以看下面的右旋转静态示意图
接下来,对上边经过左旋转之后的图进行右旋转。
人生像红黑树一样,总是需要某种平衡
一边是给予,一边是接受
一边是付出,一边是得到
一边是耕耘,一边是收获
一边是物质,一边是精神
阿广你年过二十而未立
置身于五光十色的世俗社会
我希望阿广都能铭记
一个古老但不失色彩的道理!
“活得简单才能活得自由”
因为舍得,所以淡泊
因为朴素,难以物役
所以保持精神和内在的富有
才是平衡的前提!
---END---
注:本期部分二叉树图片和思想源自公众号:程序员小灰
漫画算法:5分钟搞明白红黑树到底是什么?相关推荐
- 漫画算法:5 分钟搞明白红黑树到底是什么?
作者 | 调皮的阿广 责编 | 屠敏 下面为标准的二叉排序树 初始状态 其实想要搜索值为226的节点很简单,搜索动画过程如下: 这样不行! 这是个病! 得治! 红黑树就是一种平衡的二叉查找树,说他平衡 ...
- 【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树
目录 一.红黑树简介 二.为什么需要红黑树? 三.红黑树的特性 四.红黑树的效率 4.1 红黑树效率 4.2 红黑树和AVL树的比较 五.红黑树的等价变换 六.红黑树的操作 6.1 旋转操作 6.2 ...
- 红黑树分为红和黑有什么好处_彻底搞懂红黑树
红黑树和c++ 虚拟继承内存分布 几乎成了我的死敌,因为完全没用过,所以导致每次看懂了之后都忘了(也许不是真的看懂了,有些关键性的东西没理解透),这次准备把这两个难题(其实也不难)仔细看懂,然后再写一 ...
- 算法导论第十三章 红黑树
写在前面:这一章真的把我害惨了,之前至少尝试看过3遍,每次看之前都下定决定一定要把它拿下,可是由于内容较多,深度够深,以致于每次要不是中途有什么事放弃了就跳过了,要不是花时间太多仍然不能理解而放弃.这 ...
- 红黑树和平衡二叉树的区别_一文搞懂红黑树
文章参考 | https://segmentfault.com/a/1190000012728513 前言 当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力! 二叉树 在了解红黑树 ...
- 终于搞懂红黑树!--红黑树的原理及操作
红-黑-树 介绍: 红黑树( Red black tree)是种自平衡二叉查找树,在计算机科学中用到的一种数据结构. 它是在1972年由 Rudolf Bayer发明的当时被称为平衡二叉B树( sym ...
- 算法笔记:二叉树,红黑树
目录 <树>知识点: 二叉查找,搜索,排序树BST: 平衡二叉树:AVL树: 平衡二叉树的目的: 平衡二叉树的常用方法: 红黑树:RB Tree 红黑树性质: 旋转和颜色变化的规律: 红黑 ...
- 算法导论笔记:13-02红黑树插入
红黑树的插入可在O(lg n)完成,红黑树的插入类似于二叉搜索树的插入,为了尽量维护红黑树的性质,将插入的新节点标记为RED,然后调用RB-INSERT-FIXUP对红黑树的性质进行维护,RB-INS ...
- 算法导论 第十三章 红黑树(python)-1插入
红黑树是上一章二叉搜索树的改进,实现一种平衡 ,保证不会出现二叉树变链表的情况,基本动态集合操作的时间复杂度为O(lgn) 实际用途:c++stl中的set,map是用他实现的 红黑树的性质: 1.每 ...
最新文章
- Bzoj4566:[HAOI2016]找相同字符
- SharePoint Server 2013 之四:部署SharePoint企业版
- 科普丨让机器看见世界,这背后的技术是什么?
- 【云计算的1024种玩法】巧用迁云工具轻松实现服务器迁移到ECS
- RequireJs入门(一)
- 39. Leetcode 110. 平衡二叉树 (二叉树-二叉树性质)
- Flutter中的提示工具
- gpg加密命令 linux_用 PGP 保护代码完整性(四):将主密钥移到离线存储中 | Linux 中国...
- solver.prototxt文件里面参数含义及其设置
- 使用PerfView监测.NET程序性能(一):Event Trace for Windows
- 开源项目参与_通过更好的文档吸引更多的项目参与人
- linux mtp设备,这么烂的MTP 为何现在所有Android设备都不能不用
- win7驱动程序未经签名可以使用吗_如何解决Windows7安装驱动程序强制要求签名
- 动荡下如何自救 | 社招一年收割BATDK算法offer
- 12 月 Web 服务器调查:“王者” nginx 增长最快!
- thinkphp建站-前后台文件配置
- hdu 1873“看病要排队”——优先队列的应用
- 296 最佳的碰头地点
- linux给root权限命令,linux设置root权限命令
- UE4_模型_Bound(边界)
热门文章
- 开源的 6 条社会契约
- 腾讯云存储产品矩阵全面升级,发布三维生态战略
- 看过漫改,但你看过「改漫」吗?AI 一键让影视变漫画
- 区区几行Python代码,一分钟搞定一天工作量
- 计算机视觉怎样实现自我超越?更大规模更精准的数据
- “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
- ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
- 《评人工智能如何走向新阶段》后记(再续16)
- 网红“AI大佬”被爆论文剽窃,Jeff Dean都看不下去了
- 从摩尔定律到人工智能,指数定律释放人类潜能