数据结构与算法——红黑树(Red Black Tree)

红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组;红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。

红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能;它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。

红黑树的性质

  1. 每个节点非红即黑
  2. 根节点是黑的;
  3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;
  4. 如图所示,如果一个节点是红的,那么它的两儿子都是黑的;
  5. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;

红黑树的插入

1. 插入的是根节点

原树是空树,此情况只会违反性质2,直接将次结点涂为黑色

2. 插入的结点的父结点是黑色

此时的插入不会违反红黑的任何性质,直接插入

3. 当前结点的父结点是红色祖父结点的另一个子节点是红色

此时将当前结点的父结点和叔叔节点涂黑,祖父结点涂红;

把当前结点指向祖父结点,从新的当前结点重新开始计算。

变换前:

变换后:

4. 当前结点的父结点是红色,叔叔结点是黑色,当前结点是其父结点的右子树

当前结点的父结点作为新的当前结点,以新当前结点为支点进行左旋。

变换前:

变换后:

5. 当前结点的父结点是红色的,叔叔结点是黑色的,当前结点是其父结点的左子树

此时将父结点变为黑色,祖父结点变为红色,祖父结点作为支点进行右旋。

变换前:

变换后:

数据结构与算法——红黑树(Red Black Tree)相关推荐

  1. 高级数据结构与算法 | 红黑树(Red-Black Tree)

    文章目录 红黑树 红黑树的概念 红黑树的性质 红黑树与AVL树 红黑树的实现 红黑树的节点 红黑树的插入 红黑树的查找 红黑树的验证 完整代码 红黑树 红黑树的概念 红黑树,是一种二叉搜索树,但在每个 ...

  2. 红黑树Red/Black Tree

    红黑树Red/Black Tree 建立二进制搜索树,我们得到红/黑树,旨在解决BST可能变得不平衡的问题.(BST[二叉搜索树],是对于任意的node x,如果node y是node x的左边的节点 ...

  3. 数据结构--红黑树 Red Black Tree

    文章目录 1.概念 2.操作 2.1 左旋.右旋(围绕某个节点的左/右旋) 2.2 插入 2.3 删除 3. 代码 1.概念 二叉树在频繁动态增删后,可能退化成链表,时间复杂度由 O(lgn) 变成 ...

  4. 红黑树(Red Black Tree)详解

    红黑树 红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组. 红黑树是在1972年由Rudolf Bayer发明的,当时被称为 ...

  5. 数据结构与算法 / 红黑树

    一.定义 根节点是黑色的. 叶子节点是空的且是黑色的. 任何相邻的节点不能都为红色. 任意节点到其每个叶子节点的路径上,黑色的节点的数量相同. 二.性质 红黑树解决了 AVL 树增.删时耗时过大的问题 ...

  6. 父子结构查询_Java面试准备(5)之数据结构与算法——红黑树

    欢迎点赞评论+关注~~~~~~~ 如上图,二叉查找树极端情况下可能会变成一个单链表,这种查询时间复杂度就变成O(n)了,红黑树在二叉查找树的基础上进行了自平衡. 1.原理分析 如上图,红黑树具有以下特 ...

  7. 红黑树(Red Black Tree)超详细解析

    红黑树详解 什么是红黑树? ​ 红黑树,是一种二叉搜索树的特化,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black. 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确 ...

  8. 红黑树(Red–black tree)

    一.红黑树的概念: 在计算机科学中,红黑树是一种自平衡二叉搜索树.每个节点存储一个表示"颜色"("红"或"黑")的额外位,用于确保树在插入和 ...

  9. 数据结构——红黑树(red-black tree)

    RB-tree(红黑树)是一种平衡二叉搜索树,它每个节点上增加了一个存储位来表示节点的颜色,可以是 Red 或 Black,故得名.通过对任何一条从根到叶子的简单路径上各个节点的颜色进行约束,红黑树能 ...

  10. 数据结构之「红黑树」

    红黑树 红黑树(Red–black tree)是一种自平衡二叉查找树.红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色. 红黑树的特性: 1.节点要么是红色要么就是黑色,不能没有颜色. 2 ...

最新文章

  1. 基于GAN的单目图像3D物体重建(纹理和形状)
  2. c++读取.dat文件_MySQL 数据文件类型
  3. JAVA WEB开发环境搭建教程
  4. codevs 5966 [SDOI2017]硬币游戏
  5. AD画封装的血泪教训:有叉的放在外侧
  6. 面试官:谈谈 Tomcat 架构及启动过程,我一脸懵逼。。
  7. Netty自带的心跳机制——IdleStateHandler
  8. 无线桥接dhcp服务器不启动,TP-Link路由器桥接提示“获取IP地址失败,请检查DHCP是否开启...
  9. Java double value_Java Double doubleValue()用法及代码示例
  10. EFF 测试 Privacy Badger,禁止第三方跟踪
  11. 智慧城市智能化建设发展现状及展望
  12. git上传到阿里云code
  13. WPF基础五:UI②内容元素Frame
  14. 3dmax骨骼的绑定
  15. JVM性能调优3_垃圾收集器与内存分配策略__享学课堂
  16. 一张图了解数字经济产业链图谱
  17. Astah 9.0升级步骤(Widnows/Mac OS)
  18. 跨 AZ 部署最佳实践之 Zookeeper
  19. 实力上榜|海泰方圆跻身2022企业网络安全服务Top15
  20. C语言学习及复习笔记-【5】C 运算符

热门文章

  1. python火车票票价_python的requests库爬取火车票信息和所需价钱
  2. 按键精灵输出中文乱码,输出不是?,输出如Ö16:48ÀÂ
  3. 怎么把ppt弄成链接的形式_怎么把ppt改成pptx_把pptx转换成ppt的方法
  4. 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版...
  5. hadoop 查看文件大小以及文件数
  6. 安卓psp模拟器联机教程_谁知道手机版的ppsspp模拟器怎么联机啊?
  7. 虚拟机macos系统共享文件
  8. python百钱买百鸡问题答案_Python学习-算法-百钱买百鸡的问题
  9. 支付宝APP参数SDK转换URL网页链接
  10. Pimple Containter 容器使用实例代码