数据结构和算法-红黑树(定义 性质 查找 插入 删除)

文章目录

红黑树的定义和性质

为什么要发明红黑树?

插入和删除即一般不会破坏特性,并且即使破坏,恢复的代价比较低

红黑树怎么考

总览

红黑树的定义

叶节点不是我们认为的没有子树的节点了,是空节点,即我们所认识的叶子节点的孩子就是叶节点

实例:一颗红黑树

练习:是否符合红黑树的要求


将6变为红后

但此时7不满足二叉排序树,替换为11即可

一种可能的出题思路

补充概念:节点黑高

注意不包括出发的节点

红黑树的性质

由于根节点到任意节点的的路径上所含黑节点的数目相同,最短就是全黑嘛,但最长就是有红节点在路径上,由于不存在相邻的红节点这个特性,所以节点树最多的情况就是在黑节点之间有红节点,此时总结点数模至多为全黑节点的两倍

红黑树的查找

和查找平衡二叉树和二叉排序树一样,小于走左子树,大于走右子树

红黑树的插入

实例

非根节点的插入只需关注不红红的这个问题

插入非根节点为红是为了保持黑路同

插入5后发现有红红,此时叔节点为黑,相对爷节点是LL型,此时父节点右旋换爷节点同时变色

插入后红红,此时叔为红,此时叔父爷变色,爷看作新节点,,此时爷节点是根但为红色再变色

此时再插入一个,存在红红,此时叔为黑,且为RR,此时父换爷,同时父和爷变色

此时加入节点,存在红红,且叔为红,此时叔父爷变色,同时将爷看作新加入的节点,发现没破坏红黑树的特性

插入3没啥大问题

插入2,此时红红,同样父换爷,同时染色

此时红叔,叔父爷变色,同时爷看作新节点

插入35

插入25

插入18

插入22

红红,叔为红,叔父爷变色,此时将爷看作新节点,此时存在红红,而该新节点叔为红,所以此时叔父爷都变色,此时的爷看作新节点,但为红节点,所以变黑

插入23,此时红红,叔为黑,且为LR,此时左旋再右旋,最后变色

左旋结果

右旋结果

最后将原来的儿爷节点变色

插入24

红红,此时叔父爷变色,爷看作新节点,存在红红

此时叔为黑,为LR

先左旋

再右旋

原本的儿爷变色

插入19

插入18

此时已经存在18,可以放18的左边也可以放右边

若插入右边

先右旋

再左旋

原本儿爷变色

小结

由根节点到叶节点的最长路径不大于最短路径的两倍可知道左右子树的高度也不过两倍关系

与黑高相关的理论

外部节点就是空节点

根节点黑高为h的红黑树,此时内部节点要最少的话,必须即全黑即可,因为有红的话不能有相邻的。而此时全黑的情况下也是吗,满树,不然达不到从根节点的黑高为h

黑高大于等于h/2是由于如果是一个黑一红那么黑高将大于等于h/2,又由根节点黑高可得出内部节点数最少数量,最后可得出总高度的范围

红黑树的删除

删除方式和二叉排序树一样

只是调整方式不同

相关推荐
罗湖老棍子2 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd4 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
CV爱数码5 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n5 小时前
【算法】约瑟夫环问题
java·算法
郝亚军5 小时前
manifest 中 `sha256` 与 `signValue` 的作用
java·开发语言·数据结构
l1t6 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2086 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE6 小时前
10.18【A】
算法
LMT流氓兔6 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
物联网软硬件开发-轨物科技7 小时前
【轨物方案】深度解读开关柜智能感知及一键顺控专家系统
大数据·运维·网络·人工智能·算法·机器人