红黑树(Red Black Tree)

红黑树(Red Black Tree,RBTree) 一、概念 红黑树是一种自平衡二叉查找树(二叉排序树)。与平衡二叉树(avl树)不同的是,红黑树是弱平衡二叉树,即它的左右子树高度差有可能大于1。 二、5大性质 每个节点要么是黑色, 要么是红色。 根节点是黑色。 每个叶节点(Nil,空值)都是黑色。 每个红色节点的两个子节点一定都是黑色。 任意一个节点到每个叶子节点的路径都包含相同数量的黑节点。 三、推论(或规律) 左子树和右子树的黑节点的层数是相等的。因此我们称红黑树的这种平衡为黑色完美平衡。(由性质5推出) 如果一个节点存在黑子节点,那么该节点肯定 阅读详情

红黑树是一种自平衡的二叉树,也是二叉查找树。

红黑树和AVL树类似,都是在进行插入和删除操作的时候进行特定的操作以保证二叉查找树的平衡

非空红黑树满足下面的性质:

1.节点是红色或黑色。

2.根节点是黑色。

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

4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

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

 

红黑树的操作

在红黑树上只读操作不需要对用于二叉查找树的操作做出修改,因为它也是二叉查找树。但是,在插入和删除之后,红黑属性可能变得违规。恢复红黑属性需要少量(O(log n))的颜色变更(这在实践中是非常快速的)并且不超过三次树旋转(对于插入是两次)。这允许插入和删除保持为 O(log n) 次,但是它导致了非常复杂的操作。

红黑树调整参考:https://www.bilibili.com/video/av70652717?p=3 或者 https://www.jianshu.com/p/e136ec79235c

红黑树(Red Black Tree)超详细解析 ​ 红黑树,是一种二叉搜索树的特化,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。​ 红黑树和AVL树都是高效的平衡二叉树,增删改查的时间复杂度都是O(logN),红黑树不追求绝对平衡,其只需保证最长路径不超过最短路径的2倍,相对而言,降低了插入和旋转的次数,所以在经常进行增删的结构中性能比AVL树更优,而且红黑树实现比较简单,所以实际运用中红黑树更多。 阅读详情

相关推荐

简单聊聊红黑树(Red Black Tree)

前言 众所周知,红黑树是非常经典,也很非常重要的数据结构,自从1972年被发明以来,因为其稳定高效的特性,40多年的时间里,红黑树一直应用在许多系统组件和基础类库中,默默无闻的为我们提供服务,身边有很多同学经常问红黑树是怎么实现的,所以在这里想写一篇文章简单和大家聊聊下红黑树 小编看过很多讲红黑树的文章,都不是很容易懂,主要也是因为完整的红黑树很复杂,想通过一篇文章来说清楚实在...

肖斌 的专栏 636

红黑树-性质图解

RBT 红黑树AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多;红黑是弱平衡的,用非严格的平衡来换取增删节点时候旋转次数的降低;所以简单说,搜索的次数远远大于插入和删除,那么选择AVL树,如果搜索,插入删除次数几乎差不多,应该选择RB树。红黑树上每个结点内含五个域,color,key,left,right,p。如果相应的指针域没有,则设为NIL。一般的,红黑树...

程序笔记的博客 436

WSL 相关命令时遇到了 “无法从raw.githubusercontent.com提取分发列表、操作超时

核心问题:国内网络屏蔽raw.githubusercontent.com,导致WSL无法获取发行版列表;最优方案:优先用方案1(手动指定发行版安装),无需改配置,1分钟搞定;永久修复:用方案2(修改hosts),适合需要管理多个WSL发行版的场景;兜底方案:用方案3(手动下载安装包),适配所有网络环境。按以上步骤操作后,你不仅能正常安装WSL,等命令也能正常执行,后续可正常使用WSL搭配Docker Desktop(如切换WSL 2后端),无需再担心网络超时问题。

weixin_39766667的博客 2146

好用又安全的 MEGA 网盘—百度网盘替代方案

好用又安全的 MEGA 网盘—百度网盘替代方案 pandownload 凉了 最近度盘下载神器 pandownload 作者被捕的事情在网上热传。比如,知乎上有话题 如何评价2020年4月15日pandownload被执法? - 知乎 问题下许多回答,都有表露出对 百度网盘 的不满。天下苦百度久矣,奈何百度系的一些产品,在特殊国情下很难找到替代产品。比如,搜索引擎,谷歌自然好,但是国内要使用谷歌...

美人如玉 1万+

车辆贷款违约预测挑战赛

2021科大讯飞-车辆贷款违约预测挑战赛--方案简介车贷违约预测问题,目的是建立风险识别模型来预测可能违约的借款人。预测结果为借款人是否可能违约,属于二分类问题。偏数据挖掘的比赛,关键点是如何基于对数据的理解抽象归纳出有用的特征。站在大佬的视角,尝试学习总结,站在巨人的肩膀上,也许看得会更远一些。直接进入主题,开始学习套路,芜湖~特征工程1、常用库、数据导入import pandas as pd import numpy as np import lightgbm as lgb import xgboost

平平淡淡,戒急用忍,一生学闭嘴。 3341

【愚公系列】《AIGC辅助软件开发》041-如何使用 AI技术提升工作效率:AI辅助软件架构师实践

在数字化转型的浪潮中,软件架构师作为技术团队的核心,承载着系统设计与架构优化的重要责任。然而,随着项目复杂度的增加和技术环境的变化,架构师面临着前所未有的挑战。幸运的是,人工智能(AI)技术的迅猛发展为这一行业带来了新的机遇,帮助架构师提升工作效率、优化决策过程,并改善团队协作。本文将深入探讨AI如何辅助软件架构师的实际工作,具体分析AI在需求分析、架构设计、代码生成、测试和优化等环节的应用。

愚公智库 15万+

红黑树 RedBlackTree

参考算法导论第三版第十二章: 二叉搜索树。实现代码:百度网盘,提取密码:n6yd。  当普通的二叉搜索树高低较低时,对于树的操作效率较高,考虑这样一种情况:按照关键字从小到大(或从大到小)构建一颗搜索二叉树,这样的一颗树实际上就是一个线性链表,搜索性能很差,为O(n)。与理想的lg(n)有较大差距。当然这是一种最坏情况。而红黑树就是一颗加强版的二叉搜索树,它是一个近似平衡的(从根结点到叶结点的路

阿振的博客 396

ExoPlayer硬解码实战:如何绕过系统默认软解码提升播放性能(附完整代码)

本文深入剖析了ExoPlayer默认解码器选择机制的不确定性,并提供了通过自定义MediaCodecSelector强制启用硬解码的完整实战方案。该方案能有效解决因软解码导致的播放卡顿、黑屏花屏及高功耗问题,显著提升Android应用在各种设备上的视频播放性能与稳定性。

weixin_29295541的博客 456

红黑树—Red Black Tree

红黑树是具有以下五条性质的二叉查找树: 1、每个结点要么是红的要么是黑的。 2、根结点是黑的。 3、每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。 4、如果一个结点是红的,那么它的两个儿子都是黑的。 5、 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。 正是由于红黑树的以上五个性质,使得其高度最多是2log(N+1),从而保证红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。 在插入、删除过程中最关键的就是时刻保证RBT的五个性质

艰难困苦如同欢乐,终将成为人生最后的财富 1223

TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

qq_32044265的博客 4219

多目标跟踪中使用trackeval评估dancetrack运行结果

trackeval使用

qq_46144849的博客 1783

红黑树 Red Black Tree

红黑树是一种自平衡二叉搜索树,通过在二叉搜索树基础上增加五大性质来维持平衡:1)节点有红黑两色;2)根节点为黑;3)叶子节点为黑;4)无连续红节点;5)各路径黑节点数相同。相比AVL树,红黑树的平衡条件更宽松,降低了调整频率,在频繁插入删除场景下效率更高。插入操作分为四种情况处理:父节点为黑时直接插入;父红叔黑时旋转变色;父叔皆红时变色向上递归;父红叔黑且为"左右"或"右左"类型时先旋转转为"左左"或"右右"类型再处理。红黑树在

qq_40589140的博客 1143

RV1126B RV1126B-P 瑞芯微 高性能视觉处理器SoC 芯片

它集成了大量算法加速器,如 HDR、3A、LSC、3DNR、2DNR、锐化、去雾、鱼眼校正、伽马校正、特征点检测等。此外,还配备了一款最多8兆像素的 AI-ISP,作为对传统ISP 的补充,以提供卓越的空间去噪性能和增强的图像增强效果。除了先前的高性能多媒体区块外,RV1126B还包含丰富的音频、内存和其他外围接口,如I2C、SPI、PWM等。借助这-特性,来自相机的视频可以以高分辨率进行编码,并存储在本地内存中,同时还能将另-段较低分辨率的视频传输到云存储。

szhorsway的博客 1862

红黑树(RED-BLACK TREE)

红黑树(RED-BLACK TREE)

Xpccccc的博客 1306

C#与欧姆龙PLC 通信——fins udp协议

该调试助手专门为了帮助大家学习以及测试Fins-Udp通信,下面进行详细介绍。

qq_34059233的博客 2875

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

红黑树(Red-Black Tree)

红黑树(Red-Black Tree)是一种自平衡的二叉查找树(Binary Search Tree, BST),它通过在每个节点上附加一个存储位表示颜色(红色或黑色)来确保树的平衡。红黑树能够在 O(log n) 时间内执行插入、删除和查找操作,这里的 n 是树中节点的数量。

xy2006860的专栏 846

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

红黑树(Red Black Tree)详解

红黑树 红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。 红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性..

wenkezhuangyuan的博客 1924

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

红黑树 Red-Black Tree

红黑树(Red-Black Tree,简称RBT),是一种自平衡二叉搜索树(Binary Search Tree,简称BST),其每个节点的值大于其左子树中的任意节点值,且小于其右子树中的任意节点值。红黑树通过对节点的颜色进行约束来保证树的平衡,确保树的高度大致成对数增长,使得查找、插入和删除操作的时间复杂度均为O(logn)。

CQRuler的博客 1099

红黑树(Red Black Tree)

一、概述: R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 二、特性: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色。 (3)每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (4)如果一个节...

努力进阶的小菜鸟 606

手撕红黑树(Red-Black Tree)

红黑树 (C++实现)

林慢慢的博客 3601

【数据结构】什么是红黑树(Red Black Tree)?

数据结构之红黑树概念详解,内容包括:红黑树的概念,红黑树的操作(插入,删除)等操作的逻辑详解及过程图示。逻辑明了,图解丰富,非常适合入门学习.

C/C++领域,数据结构,linux,MySQl学习者 1440

【数据结构】——红黑树Red Black Tree

(1),当u为红色时,把u变色为黑,p变色为黑,g变色为红,令g为新的z(z=g),p为继续为z的父亲,循环向上调整,直到p为黑色结束或者z为根结点时变色为黑结束。2,y为黑色,x为红色:删除y一定破坏“黑路同”,可能破坏“根叶黑”“不红红”,但归根到底是缺少一个黑色结点,恰好x为红色,即直接把x变色为黑色即可。一,先查找到删除的数据的结点y,判断它的度,若度为2则去寻找y的后继结点,把后继结点的元素覆盖y,y指向后继结点;LL:删除y,以p为中心进行右旋,w变成p的颜色,p结点变黑色,red变黑色。

2401_89198136的博客 1016

红黑树(Red-Black Tree)图文解析

红黑树(Red-Black Tree)图文解析

queuelovestack的专栏 1780

【C++干货铺】红黑树 (Red Black Tree)

本片文章介绍了数据结构中红黑树插入元素进行调整改色!!!

qq_55119554的博客 1417
上一篇: 平衡二叉树(Balaced Binary Tree 或 AVL树)
下一篇: 红黑树为啥不可以作为Mysql的索引
悟道|养家
博客等级 码龄8年 33粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值