红黑树的基本概念

【树形结构】红黑树 {概念及性质;红黑树的结构;带头结点的红黑树;红黑树的实现;红黑树插入操作详细解释;红黑树的验证} 阅读详情

        红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。

一个具体的红黑树的图例:

        

        红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。这不只是使它们在时间敏感的应用如实时应用(real time application)中有价值,而且使它们有在提供最坏情况担保的其他数据结构中作为建造板块的价值;例如,在计算几何中使用的很多数据结构都可以基于红黑树。

        红黑树在函数式编程中也特别有用,在这里它们是最常用的持久数据结构之一,它们用来构造关联数组和集合,在突变之后它们能保持为以前的版本。除了O(log n)的时间之外,红黑树的持久版本对每次插入或删除需要O(log n)的空间。

        红黑树是 2-3-4树的一种等同。换句话说,对于每个 2-3-4 树,都存在至少一个数据元素是同样次序的红黑树。在 2-3-4 树上的插入和删除操作也等同于在红黑树中颜色翻转和旋转。这使得 2-3-4 树成为理解红黑树背后的逻辑的重要工具,这也是很多介绍算法的教科书在红黑树之前介绍 2-3-4 树的原因,尽管 2-3-4 树在实践中不经常使用。


性质:

性质1. 节点是红色或黑色。

性质2. 根是黑色。

性质3. 所有叶子都是黑色(叶子是NIL节点)。

性质4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)

性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

        那么来看看这5个性质吧:性质1,结点的颜色域代表其父结点指向该节点的指针的颜色,如果为黑色,那么这两个结点在对应的2-3-4树中应该是父子结点的关系,如果为红色,那么这两个结点在对应的2-3-4树中应该在同一个结点中。这样每个结点有两个颜色就很容易理解了。性质2,根是黑色,因为其没有父结点,令为黑色可以理解,令为红色的话就有些矛盾了。性质3,所有叶子都是黑色,对应2-3-4树中的所有叶结点在同一层上,所有叶子结点的儿子结点都是空的。性质4,每个红色结点都必须有两个黑色的子结点,红色结点对应其在2-3-4树中位于某个3结点或者4结点,那么红色结点在红黑书中有两个黑色的子结点就很容易理解了,如果有两个连续的红色结点,那么对应在2-3-4树中这俩结点和其最近的父结点应该在一个4结点中,可是这不符合结点的拆分方式,因为结点都是由4结点的中值元素作为新的树根的。性质5,一个黑色结点可以对应到2-3-4树中的一层,而2-3-4树中所有的叶结点位于同一层,那么即路径上单纯算黑结点的深度应该是一样的。

        

为了后面的分析,我们还得知道以下知识点。

    (1)黑高度:从某个结点x出发(不包括该结点)到达一个叶结点的任意一条路径上,黑色结点的个数称为该结点x的黑高度。

    (2)一颗有n个内结点的红黑树的高度至多为2lg(n+1)。   (内结点视为红黑树中带关键字的结点)

    (3)包含n个内部节点的红黑树的高度是 O(log(n))。

证明(来自维基百科):

定义:

  • h(v) = 以节点v为根的子树的高度。
  • bh(v) = 从v到子树中任何叶子的黑色节点的数目(如果v是黑色则不计数它)(也叫做黑色高度)。

引理: 以节点v为根的子树有至少2bh(v) − 1个内部节点。

引理的证明(通过归纳高度):

基础: h(v) = 0

如果v的高度是零则它必定是 nil,因此 bh(v) = 0。所以:

                       2bh(v) − 1 = 20 − 1 = 1 − 1 = 0

归纳假设: h(v) = k 的v有 2bh(v) − 1 − 1 个内部节点暗示了 h(v') = k+1 的v'有2bh(v') − 1 个内部节点。

因为 v' 有 h(v') > 0 所以它是个内部节点。同样的它有黑色高度要么是 bh(v') 要么是 bh(v')-1 (依据v'是红色还是黑色)的两个儿子。通过归纳假设每个儿子都有至少2bh(v') − 1 − 1 个内部接点,所以v' 有:

                      2bh(v') − 1 − 1 + 2bh(v') − 1 − 1 + 1 = 2bh(v') − 1

个内部节点。

使用这个引理我们现在可以展示出树的高度是对数性的。因为在从根到叶子的任何路径上至少有一半的节点是黑色(根据红黑树属性4),根的黑色高度至少是h(root)/2。通过引理我们得到:

n \geq 2^{​{h(root) \over 2}} - 1 \leftrightarrow \; \log{(n+1)} \geq {h(root) \over 2} \leftrightarrow \; h(root) \leq 2\log{(n+1)}

因此根的高度是O(log(n))。



REF:

1,http://zh.wikipedia.org/wiki/红黑树

2,http://blog.youkuaiyun.com/wdzxl198/article/details/6882416

CentOS 7下glibc升级到2.28的保姆级避坑指南(含GCC 7.3.1编译配置) 本文详细介绍了在CentOS 7系统中将glibc升级到2.28版本的完整流程,包括GCC 7.3.1的编译配置、环境变量设置、glibc编译的细节处理以及生产环境验证。文章特别强调了风险控制和避坑技巧,适用于需要提升系统兼容性的企业级用户。 阅读详情

相关推荐

【医学影像】超声(UltraSound)影像的增强与目标检测

文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR

muyijames的博客 1万+

红黑树介绍

红黑树一、红黑树的概念红黑树的性质红黑树节点的定义红黑树结构二、使用步骤1.引入库2.读入数据总结 一、红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 红黑树的性质 每个结点不是红色就是黑色 根节点是黑色的 如果一个节点是红色的,则它的两个孩子结点是黑色的 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均 包含相同数

mz474920631的博客 4万+

Spark Graphx 项目实战(航班飞行网图分析)

航班飞行网图分析一.需要的技能点二.任务描述三.数据探索1.下载数据2.数据格式四.航班飞行网图问题分析1.构建航班飞行网图2.统计航班飞行网图中机场与航线的数量3.计算最长的飞行航线4.找出最繁忙的机场5.找出最重要的飞行航线6.找出最便宜的飞行航线五.代码实现 一.需要的技能点 Spark GraphX API Spark GraphX PageRank Spark GraphX Pregel 二.任务描述 需求概述: 探索航班飞行网图数据 构建航班飞行网图 使用Spark GraphX完成下列任

May_J_Oldhu的博客 1538

数据结构之红黑树简介

一、红黑树定义 红黑树是二叉查找树,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。 红黑树是一种含有红色和黑色节点并能自平衡的二叉查找树,红黑树和其他二叉查找树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的性质,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的:它可以在 O(log n) 时间内做查找,插入和删除,这里的 n 是树中元素的

weixiaohuai的博客 3917

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 433

c#笔记之mes上传Http协议版

HTTP(超文本传输协议) 是一种典型的协议。

qq_61441787的博客 343

数据结构(高阶)—— 红黑树

红黑树,是一种二叉搜索树,但在每个结点上增加了一个存储位表示结点的颜色,可以使Red或Black。通过对任何一条从根到叶子的路劲上各个结点着色的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而近似平衡的。对于每个结点,从该结点到其所有后代叶子结点的简单路径上,均包含相同数目的黑色结点。如果一个结点是红色的,则它的两个孩子结点是黑色的。每条路径上的黑色结点数量相同。每个结点不是红色就是黑色。此处的叶子结点指定是空结点。

M的博客 3242

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 531

什么是红黑树?

红黑树(内存最优的数据结构)

lizhongshuoyyds的博客 2724

基于逆向工程的中国裁判文书网爬虫技术深度解析

本文详细介绍了中国裁判文书网爬虫的开发过程,涵盖了从基础爬取到高级功能的完整解决方案。逆向工程分析:理解网站的反爬机制和加密逻辑浏览器自动化:使用Playwright模拟真实用户行为参数加密:通过JavaScript执行环境生成加密参数智能调度:控制请求频率,避免被检测错误处理:完善的异常处理和重试机制。

2201_76125261的博客 2145

正弦波、方波、三角波和锯齿波信号发生器——Multisim电路仿真

调节方波信号的占空比,也就是改变输出信号的高低电平时间比例,可以设置电容不同的充放电时间来达到目的,RP2可以使得电容具有不同的充放电时间,其中二极管起到限制电流流向的作用。假设U+>U,那么输出端就达到正向饱和,电容开始充电,当电容电压大于同相输入端电压时,此时电容开始放电,由此往复,从而产生方波信号。3,正反馈支路占优势,电路开始起振并不是稳定的,振荡会不断增大,最终将导致运放饱和,输出的波形是削波失真的正弦波。通常在电路中引入负反馈,例如使用负温度系数的热敏电阻,以自动稳定增益,防止输出波形失真。

XU157303764的博客 5321

红黑树基本概念

红黑树基本概念

weixin_43418664的博客 360

从 SM30 到 Fiori:在 SAP BTP ABAP Environment 里创建 Business Configuration 配置维护对象的完整路径

摘要 在SAP BTP的ABAP环境中,传统SAP GUI和SM30配置方式被Business Configuration (BC)替代。BC通过Fiori应用维护配置,支持传输和权限控制。配置表需满足可维护性条件,如允许数据维护、包含技术字段等。通过ADT生成Maintenance Object和Transport Object,实现配置发布与治理。权限管理需创建IAM App和Business Catalog,确保配置可维护。BC在云端延续了可控、可追溯、可发布的治理原则。 (字数:150)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 242

红黑树--基本概念

1.java中的TreeSet,TreeMap底层使用了红黑树2.红黑树的定义enum Color {RED = 0;BLACK = 1;}struct RBTreeNode{struct RBTreeNode *left,*right,*parent;int key;int data;Color color;}3.红黑树有哪些性质?1.每个结点要么是红的,要么是黑的。2.根节点是黑色的。3.每个...

pengwenrui的博客 497

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

红黑树RBT基本概念与实现

1. 基本概念 RBT的作用与平衡二叉树类似,目的是优化原始BST查找效率低的问题。RBT需成立,要满足如下条件: 树中每个节点有颜色(红或黑) 根节点必须为黑色 NULL值处称为终端节点,我们可以认为是黑色 不允许两个红节点互为父子关系 从任意节点向下出发,到所有终端节点的各条路径上黑节点个数相同 2. RBT节点添加 向RBT添加节点,该节点默认初始化为红色。(若为黑色则第五个条件不满足,若为红色可能不满足第四个条件,但第五个条件不好调控,所以选择红色。) 添加步骤如下图: 3. RBT节点删除

qq_39350434的博客 937

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数据结构与算法:红黑树(一)——基本概念

本篇文章主要介绍红黑树的基本概念。

董小虫的专栏 3566

红黑树的基本概念与增删改查完整实现(C++)

-

zorchp 1156

BST树、红黑树(1-基本概念)

BST树、红黑树 BST树(二叉排序树,二叉搜索树) 定义: (1) 若左子树非空,那么左子树上所有节点关键字均小于根节点的关键字值 (2) 若右子树非空,则右子树上的所有节点关键字均大于根节点的关键字值 (3) 左、右子树本身也是一颗二叉排序树 红黑树: 红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储为来表示结点的颜色,可以是红色或者黑色。通过对任何一条从根到叶子结点的简...

长弓smile的博客 908

类比4阶B树,了解红黑树基本概念及新增删除操作

基本概念 红黑树也是一种自平衡的二叉搜索树,以前也叫做平衡二叉B树(Symmetric Binary B-tree) 必须满足以下 5 条性质 节点是 RED 或者 BLACK 根节点是 BLACK 叶子节点(外部节点,空节点)都是 BLACK RED 节点的子节点都是 BLACK RED 节点的 parent 都是 BLACK 从根节点到叶子节点的所有路径上不能有 2 个连续的 RED 节点 从任一节点到叶子节点的所有路径都包含相同数目的 BLACK 节点 红黑树的等

cybxh的博客 796

红黑树(RED-BLACK TREES)基本概念

下面是一棵红黑树 红黑树:是一棵要么标记为红色要么标记为黑色的二叉搜索树,同时是一棵extended二叉树(即在原来二叉树的基础上将叶子节点的两个null指针替换成external节点,上图的方块就是external节点)。性质如下: 1)根节点和external节点都是黑色的。 2)任何一条从根节点到external节点的路径中不存在两个连续的红色节点。 3)所有从根节点到ext

2144

红黑树的基本概念及java实现

红黑树的性质 红黑树和平衡二叉树类似,最大的区别是红黑树为节点赋予了黑色和红色两种属性。 红黑树的节点只有两种颜色,红色和黑色。 根节点为黑色。 叶子节点为黑色,值为NULL。 没有两个连续的红色节点。 从一个节点到该节点的子孙节点的所有路径包含相同数目的黑色节点。 平衡树的旋转 红黑树和AVL树的平衡条件类似,当插入节点之后,可能会导致树的某节点左右子树高度差大于1。这时候我们需要左旋转或者...

马一凡的博客 405

红黑树(一):基本概念和数据结构

红黑树(一):基本概念和数据结构

主要研究图形学相关领域 334

04_红黑树_基本概念_添加_删除——终极详细版

红黑树具体操作 添加操作、代码 删除

weixin_45442495的博客 536
上一篇: 2-3-4树与红黑树的对应关系
下一篇: 红黑树(RED-BLACK TREE)的插入和删除
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值