注:本期二叉树部分图片和思想源自公众号:程序员小灰

---正文---

下面为标准的二叉排序树

初始状态

其实想要搜索值为226的节点很简单,搜索动画过程如下:

这样不行!

这是个病!

得治!

红黑树就是一种平衡的二叉查找树,说他平衡的意思是他不会变成“瘸子”,左腿特别长或者右腿特别长。除了符合二叉查找树的特性之外,还具体下列的特性:

1. 节点是红色或者黑色

2. 根节点是黑色

3. 每个叶子的节点都是黑色的空节点(NULL)

4. 每个红色节点的两个子节点都是黑色的。

5. 从任意节点到其每个叶子的所有路径都包含相同的黑色节点。

下面为标准的红黑树,阿广建议大家对照下面的图理解上边写的红黑树的性质哦~

(黑色的NULL节点可忽略)

例如上面标准的红黑树,插入值为12的节点。

插入之后发现仍然满足红黑树的要求!

但是如果插入值为21的节点呢?

如下图所示

先来看一下变色!

为了符合红黑树的规则,会把节点红变黑或者黑变红。下图展示的是红黑树的部分,需要注意节点25并非根节点。因为21和22链接出现红色,不符合规则4,所以把22红变黑:

但这样还是不符合规则5,所以需要把25黑变红,看下图:

接下来先讲一下什么是左旋转!通过动画举个例子吧!

左旋转思想示意图如下

通俗点讲一下,可以看下面的左旋转静态示意图

按照左旋转,对上边已经变色完成之后图进行左旋转。

可见右旋转的思想总结如下:

通俗点讲一下,可以看下面的右旋转静态示意图

接下来,对上边经过左旋转之后的图进行右旋转。

人生像红黑树一样,总是需要某种平衡

一边是给予,一边是接受

一边是付出,一边是得到

一边是耕耘,一边是收获

一边是物质,一边是精神

阿广你年过二十而未立

置身于五光十色的世俗社会

我希望阿广都能铭记

一个古老但不失色彩的道理!

“活得简单才能活得自由”

因为舍得,所以淡泊

因为朴素,难以物役

所以保持精神和内在的富有

才是平衡的前提!

---END---

注:本期部分二叉树图片和思想源自公众号:程序员小灰

漫画算法:5分钟搞明白红黑树到底是什么?相关推荐

  1. 漫画算法:5 分钟搞明白红黑树到底是什么?

    作者 | 调皮的阿广 责编 | 屠敏 下面为标准的二叉排序树 初始状态 其实想要搜索值为226的节点很简单,搜索动画过程如下: 这样不行! 这是个病! 得治! 红黑树就是一种平衡的二叉查找树,说他平衡 ...

  2. 【数据结构】史上最好理解的红黑树讲解,让你彻底搞懂红黑树

    目录 一.红黑树简介 二.为什么需要红黑树? 三.红黑树的特性 四.红黑树的效率 4.1 红黑树效率 4.2 红黑树和AVL树的比较 五.红黑树的等价变换 六.红黑树的操作 6.1 旋转操作 6.2 ...

  3. 红黑树分为红和黑有什么好处_彻底搞懂红黑树

    红黑树和c++ 虚拟继承内存分布 几乎成了我的死敌,因为完全没用过,所以导致每次看懂了之后都忘了(也许不是真的看懂了,有些关键性的东西没理解透),这次准备把这两个难题(其实也不难)仔细看懂,然后再写一 ...

  4. 算法导论第十三章 红黑树

    写在前面:这一章真的把我害惨了,之前至少尝试看过3遍,每次看之前都下定决定一定要把它拿下,可是由于内容较多,深度够深,以致于每次要不是中途有什么事放弃了就跳过了,要不是花时间太多仍然不能理解而放弃.这 ...

  5. 红黑树和平衡二叉树的区别_一文搞懂红黑树

    文章参考 | https://segmentfault.com/a/1190000012728513 前言 当在10亿数据进行不到30次比较就能查找到目标时,不禁感叹编程之魅力! 二叉树 在了解红黑树 ...

  6. 终于搞懂红黑树!--红黑树的原理及操作

    红-黑-树 介绍: 红黑树( Red black tree)是种自平衡二叉查找树,在计算机科学中用到的一种数据结构. 它是在1972年由 Rudolf Bayer发明的当时被称为平衡二叉B树( sym ...

  7. 算法笔记:二叉树,红黑树

    目录 <树>知识点: 二叉查找,搜索,排序树BST: 平衡二叉树:AVL树: 平衡二叉树的目的: 平衡二叉树的常用方法: 红黑树:RB Tree 红黑树性质: 旋转和颜色变化的规律: 红黑 ...

  8. 算法导论笔记:13-02红黑树插入

    红黑树的插入可在O(lg n)完成,红黑树的插入类似于二叉搜索树的插入,为了尽量维护红黑树的性质,将插入的新节点标记为RED,然后调用RB-INSERT-FIXUP对红黑树的性质进行维护,RB-INS ...

  9. 算法导论 第十三章 红黑树(python)-1插入

    红黑树是上一章二叉搜索树的改进,实现一种平衡 ,保证不会出现二叉树变链表的情况,基本动态集合操作的时间复杂度为O(lgn) 实际用途:c++stl中的set,map是用他实现的 红黑树的性质: 1.每 ...

最新文章

  1. Bzoj4566:[HAOI2016]找相同字符
  2. SharePoint Server 2013 之四:部署SharePoint企业版
  3. 科普丨让机器看见世界,这背后的技术是什么?
  4. 【云计算的1024种玩法】巧用迁云工具轻松实现服务器迁移到ECS
  5. RequireJs入门(一)
  6. 39. Leetcode 110. 平衡二叉树 (二叉树-二叉树性质)
  7. Flutter中的提示工具
  8. gpg加密命令 linux_用 PGP 保护代码完整性(四):将主密钥移到离线存储中 | Linux 中国...
  9. solver.prototxt文件里面参数含义及其设置
  10. 使用PerfView监测.NET程序性能(一):Event Trace for Windows
  11. 开源项目参与_通过更好的文档吸引更多的项目参与人
  12. linux mtp设备,这么烂的MTP 为何现在所有Android设备都不能不用
  13. win7驱动程序未经签名可以使用吗_如何解决Windows7安装驱动程序强制要求签名
  14. 动荡下如何自救 | 社招一年收割BATDK算法offer
  15. 12 月 Web 服务器调查:“王者” nginx 增长最快!
  16. thinkphp建站-前后台文件配置
  17. hdu 1873“看病要排队”——优先队列的应用
  18. 296 最佳的碰头地点
  19. linux给root权限命令,linux设置root权限命令
  20. UE4_模型_Bound(边界)

热门文章

  1. 开源的 6 条社会契约
  2. 腾讯云存储产品矩阵全面升级,发布三维生态战略
  3. 看过漫改,但你看过「改漫」吗?AI 一键让影视变漫画
  4. 区区几行Python代码,一分钟搞定一天工作量
  5. 计算机视觉怎样实现自我超越?更大规模更精准的数据
  6. “编程能力差!90%输在这点上”谷歌AI专家:其实都是瞎努力!
  7. ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
  8. 《评人工智能如何走向新阶段》后记(再续16)
  9. 网红“AI大佬”被爆论文剽窃,Jeff Dean都看不下去了
  10. 从摩尔定律到人工智能,指数定律释放人类潜能