Red-Black-Tree又叫红黑树,各操作都为O(logn)因为加入左特殊ge规则,最大高度可以控制到2*logn且最长路径最大为最短路径ge2倍。个人认为,系一种剩适合练习但唔系好实用ge结构,因为好复杂,但系又系好多树ge基础数据结构窝,所以就睇下咯。
首先介绍距ge5种性质:
1)每个结点系红色或者黑色。
2)根必须系黑色。
3)每个叶结点必为黑色。
4)红色结点必有两个黑色儿子。(保证无两个红色节点相连)
5)从树中每个节点开始到其所有叶子所经过ge黑结点个数相同。
(因为性质4,所以最坏情况就系两个黑结点之间都有一个红结点,所以最长路径为最短路径两倍)
跟住就说明下RB-Delete-Fixed(删除操作后恢复红黑性质)咯,以下内容十分似扭魔方,哈哈。
以下情况只系删除结点y为黑色ge时候发生,考察儿子x,且被删结点y最多只有一个儿子(自己查下基本二叉树删除操作啦哈哈)。
首先假设x系当前结点指针,且为y左儿子(右儿子操作对称),w系x兄弟ge指针,p[x]系x老豆ge指针,呢个操作首先系假设x有多一重黑色,既将被删黑色结点ge黑色往下推,使其保证性质5,但系破坏左性质1(前提),因为根据假设,x结点系红黑或者双重黑色,以下证明操作回复红黑性质1,2,4,5,唔洗理3,因为红黑树用左哨兵。{= =}
定义x所指向结点多一层黑色(假设ge黑色,最后镀系边个点吾一定),并不是x本身color属性变化(color属性只有红色或黑色)。
情况1)xcolor属性系红色。
一、x系根部,只有可能破坏性质性质2,只需要直接镀上黑色就回复左。
二、x唔系根部,无破坏性质2,有可能破坏性质4(p[x]有可能红色),只需直接将黑色镀上,回复性质1,4,5。
情况2)xcolor属性系黑色,考察其兄弟w。
一、w为红色(即p[x]color必为黑色)
将p[x]color改为红色,w改为黑色,对p[x]做左旋后,w变为p[x]父结点,
w左儿子变成x兄弟,且必定为黑色(因为w本来红色),无破坏性质,2,3,4,5,未回复性质1.进入下一次循环,(注意此时p[x]为红色,新w为黑色。)
二、w为黑色(因为性质4,通常系红色,除左p[x]系根)
小情况1)w两个儿子都为黑色。
注意x同埋w都系黑色,只需要将黑色往p[x]推就ok啦。即将wcolor改为红色,x指针指向p[x],尼几个操作无破坏2,3,4,5。呢个时候有两种情况:
1、p[x]本来color为红色,将x指针黑色镀上后,就可以回复性质1,循环结束。
(注意到如果从“一”进入到呢种情况,循环必定结束)
2、p[x]本来color为黑色,吾可以将黑色镀上,因为宜家p[x]系双重黑色,未回复性质1,继续下一次循环。
小情况2)w左儿子为红色,右儿子为黑色。
将w左儿子着黑色,w着色红色,w做右旋,新w为原w左儿子,等价于原w左子树少一红结点,右子树多一红结点,不破坏性质2,3,4,5。未回复性质1,继续下一次循环。
小情况3)w右儿子为红色。
将w着色为红色,p[x]同w右儿子着色为黑色,对p[x]做左旋后,x可以吾捞,因为已经回复左性质1。其他红黑属性无被破坏。
9up完啦~~~。
分享到:
相关推荐
“RB.2/.4、RB.3/.6、RB.4/.8、RB.5/1.0”是电容封装的特定型号,其中“RB”通常代表直插式圆柱形电容器的封装系列,而数字部分分别表示电容底部直径和引脚之间的中心距。例如,RB.2/.4意味着电容主体直径为2毫米,...
4.RB-10-001-6轴机器人.zip非标自动化设备solidworks3D图纸机械设计素材资料 4.RB-10-001-6轴机器人.zip非标自动化设备solidworks3D图纸机械设计素材资料 4.RB-10-001-6轴机器人.zip非标自动化设备solidworks3D图纸...
`redis-trib.rb` 文件是 Redis 集群搭建过程中至关重要的工具,它是一个 Ruby 脚本,用于创建和管理 Redis 集群。在 Redis 5.0 版本及以下,`redis-trib.rb` 是官方提供的集群配置和维护工具。这个脚本允许用户方便...
RE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-SB-符号详解.docxRE-RB-OFDM-...
redis-trib.rb redis集群脚本,亲测可用。ps: 先安装ruby
RTL8367RB-CG和RTL8370N-VB-CG是两种常见的网络芯片,它们在局域网(LAN)设备如路由器、交换机等中扮演着重要角色。这些数据手册提供了关于这两款芯片的详细技术规格和功能信息,对于开发者、硬件工程师或者网络设备...
RTL8367RB-CG是一款由Realtek半导体公司开发的5+2端口10/100/1000M以太网交换控制器芯片,具有第二层管理功能。它支持高达8个千兆以太网接口(5个为固定端口,另外2个为可选端口),并支持10/100/1000Mbps自适应传输...
《RTL8367RB-CG与RTL8370N-VB-CG芯片数据手册解析》 在IT行业中,了解并掌握特定芯片的功能和特性是至关重要的,尤其是在网络设备和嵌入式系统的设计和开发中。RTL8367RB-CG和RTL8370N-VB-CG是Realtek公司生产的两...
用来构建redis集群的执行脚本, 执行方式 redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --replicas 1 为每一个主节点配置一个...
搭建redis集群的工具,先试试下面的方法...打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb 建议保存到Redis的目录下
标题中的“RB-10-001-6轴机器人.rar”表明这是一个关于六轴机器人的项目文件,可能是一个设计或模拟案例。该文件采用的是RAR压缩格式,通常用于存储和传输大型文件或多个相关文件。RAR文件可以包含各种类型的数据,...
标题“en.mb1367-g431rb-c04_schematic.pdf”和描述“NUCLEO-G431RB原理图”表明本文档是关于STM32G4系列微控制器的一个开发板NUCLEO-G431RB的原理图文件。NUCLEO-G431RB开发板是STMicroelectronics(意法半导体)...
gcc编译器20220506 082534 版本为:gcc-arm-none-eabi-10.3-2021.10-win32 配合文章:nordic52832 nordic使用gcc编译环境搭建和使用说明
Percona-Server-5.5.60-38.12-r26ef816-el7-x86_64-bundle.tar linux版,优化数据库,含有高效XtraDB引擎
msfconsole中,webdav漏洞,iis服务提权工具。
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。