作者 | 阿广

责编 | 伍杏玲

下面为标准的二叉排序树:

初始状态:

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

这样不行!

这是个病!

得治!

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

1. 节点是红色或者黑色

2. 根节点是黑色

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

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

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

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

(黑色的NULL节点可忽略)

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

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

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

如下图所示:

先来看一下变色!

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

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

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

左旋转思想示意图如下:

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

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

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

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

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

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

一边是给予,一边是接受

一边是付出,一边是得到

一边是耕耘,一边是收获

一边是物质,一边是精神

阿广你年过二十而未立

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

我希望阿广都能铭记

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

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

因为舍得,所以淡泊

因为朴素,难以物役

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

才是平衡的前提!

声明:本文系作者投稿,版权归作者所有。

 热 文 推 荐 

☞真实揭秘 90 后程序员奔三准备:有人学金融投资,有人想当全栈工程师!

☞搞清楚这 5 个前端知识点,面试稳了!| CSDN 博文精选

☞从微软到微信,“对方正在输入…”功能 20 年前的起源

☞华人学者解开计算机领域 30 年难题:布尔函数敏感度猜想

☞天网恢恢!又一名暗网比特币洗钱者被抓了

☞乘势而起,走进2019年风口“边缘计算”

☞Python之父新发文,将替换现有解析器

☞超全!深度学习在计算机视觉领域的应用一览

☞中国第一程序员,微软得不到他就要毁了他!

你点的每个“在看”,我都认真当成了喜欢

漫画:5 分钟学会红黑树算法!相关推荐

  1. 【算法漫画】什么是红黑树?(下篇)

    上周,我们初步介绍了红黑树存在的意义,以及红黑树的插入操作,没看过的小伙伴可以点击下面链接: 漫画:什么是红黑树? 今天,我们来继续介绍红黑树的删除操作,以及红黑树和其他平衡二叉树的比较. 二叉查找树 ...

  2. 通过分析 JDK 源代码研究 TreeMap 红黑树算法实现--转

    TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常 ...

  3. 漫画:什么是红黑树?(下篇)

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 上周,我们初步介绍了红黑树存在的意义,以及红黑树的插入操作,没看过的小伙伴可以点击下面链接: 漫画:什么是红黑树? ...

  4. python:实现红黑树算法(附完整源码)

    python:实现红黑树算法 from __future__ import annotations from collections.abc import Iterator class RedBlac ...

  5. 红黑树算法原理及实现

    红黑树 一.简介 红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组. 红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入 ...

  6. 【算法漫画】什么是红黑树?

    文章来源于程序员小灰,作者小灰 最近,小灰把这个知识点重新做了总结,分成上下两篇,希望大家把红黑树这个重要的数据结构彻底吃透. -----  第二天  ----- ------------ 二叉查找树 ...

  7. 漫画:什么是红黑树?

    本文经授权转载自公众号程序员小灰 (ID:chengxuyuanxiaohui) ------------ ------------ 二叉查找树(BST)具备什么特性呢? 1.左子树上所有结点的值均小 ...

  8. C++ RBTree(红黑树) 算法(附完整源码)

    C++ RBTree红黑树的算法 RBTree(红黑树) 的完整源码(定义,实现,main函数测试) RBTree(红黑树) 的完整源码(定义,实现,main函数测试) #include<ios ...

  9. 完整简单的红黑树算法

    最近组内定个规矩,每周分享一个算法,上周是第一周,分享的是红黑树,下面是自己学习总结的,感觉网上的都不是特别清楚,要么是写的特别复杂,没有一点条理. 一.红黑树性质 1.每个结点要么是红的要么是黑的 ...

最新文章

  1. php批量请求url_php请求url的方法小结
  2. 传统运维团队转型应该注意哪些问题?
  3. Dota2 Pro Circuit 贪心-模拟
  4. HTML 常用标签演示
  5. Spark集群的启动日志
  6. linux usb xhci ehci,ehci和xhci有什么区别
  7. Java(多)线程中注入Spring的Bean
  8. 机器学习(2)---简单线性回归模型
  9. opencv 数学操作
  10. 虚拟机登录/系统管理等命令
  11. leetcode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)
  12. java登录验证用重定向_使用filter进行登录验证,并解决多次重定向问题
  13. QTP 10.0 破解版下载安装超详细教程
  14. 2.5音频编辑软件2.6语音识别技术
  15. python有哪两种表现形式小练笔_写一篇不一样的爱400字:爱有两种表现形式小练笔400字...
  16. GMS:基于网格运动统计的快速极度鲁棒的特征匹配
  17. OpenBCI_GUI通过lsl传输出来的数据是原始数据吗?
  18. vba 关闭屏幕刷新
  19. JVM:并发的可达性分析
  20. 笔记本搞双系统-安装Ubuntu过程没有出现选择试用-安装、没有选择“安装类型”页面、安装类型页面为空等问题解决

热门文章

  1. 人工智能应用中的安全、隐私和伦理挑战及应对思考
  2. 【JavaScript】写程序编程基础入门
  3. 【计蒜客】泥塑课C++
  4. 枪火重生灵界狂潮攻略(五)元素猫流派
  5. 数据分析师刚入职第一月需要注意什么?
  6. CSK与KCF算法推导(三)
  7. whl文件安装失败解决方法
  8. 【学习资源】机器学习相关的数学参考资料
  9. 给列名称命名_有机物的命名
  10. win10如何安装wxpython_win10 python3.8 wxpython.whl 安装步骤