`

试一下说明RB-Delete-Fixed .

阅读更多
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完啦~~~。
分享到:
评论

相关推荐

    常用电容封装 protel dxp RB.2/.4、RB.3/.6、RB.4/.8、RB.5/1.0

    “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图纸机械设计素材资料 4.RB-10-001-6轴机器人.zip非标自动化设备solidworks3D图纸...

    redis-trib.rb文件.zip

    `redis-trib.rb` 文件是 Redis 集群搭建过程中至关重要的工具,它是一个 Ruby 脚本,用于创建和管理 Redis 集群。在 Redis 5.0 版本及以下,`redis-trib.rb` 是官方提供的集群配置和维护工具。这个脚本允许用户方便...

    RE-RB-OFDM-SB-符号详解.docx

    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-trib.rb redis集群脚本,亲测可用。ps: 先安装ruby

    RTL8367RB-CG-DataSheet,RTL8370N-VB-CGDataSheet,数据手册

    RTL8367RB-CG和RTL8370N-VB-CG是两种常见的网络芯片,它们在局域网(LAN)设备如路由器、交换机等中扮演着重要角色。这些数据手册提供了关于这两款芯片的详细技术规格和功能信息,对于开发者、硬件工程师或者网络设备...

    RTL8367RB-CG_DateShee-v1.0.pdf

    RTL8367RB-CG是一款由Realtek半导体公司开发的5+2端口10/100/1000M以太网交换控制器芯片,具有第二层管理功能。它支持高达8个千兆以太网接口(5个为固定端口,另外2个为可选端口),并支持10/100/1000Mbps自适应传输...

    RTL8367RB-CG_DataSheet&RTL8370N;-VB-CGDataSheet,数据手册

    《RTL8367RB-CG与RTL8370N-VB-CG芯片数据手册解析》 在IT行业中,了解并掌握特定芯片的功能和特性是至关重要的,尤其是在网络设备和嵌入式系统的设计和开发中。RTL8367RB-CG和RTL8370N-VB-CG是Realtek公司生产的两...

    redis-trib.rb-master.rar

    用来构建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集群的工具,先试试下面的方法...打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb 建议保存到Redis的目录下

    RB-10-001-6轴机器人.rar

    标题中的“RB-10-001-6轴机器人.rar”表明这是一个关于六轴机器人的项目文件,可能是一个设计或模拟案例。该文件采用的是RAR压缩格式,通常用于存储和传输大型文件或多个相关文件。RAR文件可以包含各种类型的数据,...

    en.mb1367-g431rb-c04_schematic.pdf

    标题“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

    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

    Percona-Server-5.5.60-38.12-r26ef816-el7-x86_64-bundle.tar linux版,优化数据库,含有高效XtraDB引擎

    cve-2017-7269.rb

    msfconsole中,webdav漏洞,iis服务提权工具。

    redis-trib.rb是官方提供的Redis Cluster的管理工具

    redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。

Global site tag (gtag.js) - Google Analytics