当前位置: 首页 > news >正文

红黑树插入的旋转变色

红黑树性质:


1.每个结点不是红色就是黑色


2.根节点是黑色的


3.如果一个节点是红色的,则它的两个孩子结点是黑色的(任何路径没有连续的红色节点)


4.对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点(每条路径上黑色节点的数量相等)


5.每个叶子结点都是黑色的(此处的叶子结点指的是空结点)


为什么满足上面的性质,红黑树就能保证:其最长路径中节点个数不会超过最短路径节点个数的两倍

下面的符合要求吗?

都不符合条件4

我们插入时的节点都是按红色处理,这样有时会违反条件3,所以要变色and旋转处理

为什么不用黑色呢?

因为插入按黑色走,一定违反条件4,每条路径都要添加黑色,很难处理

下面讲的变色and旋转的关系类似于下面的图

1.p为黑色或nullptr,不用处理

2.p为红色

g一定为黑色,因为p为红色,条件3不能有连续的红色节点,若g为红色,那就违反条件3

_1.u为红色

变色:p和u变黑色,g变红色

这样处理后,原本违反条件3,经过调整后既不违反条件3,也保持了路径上黑色节点个数相同,

不过还要向上调整,看下面的情况

原本g为黑色,经过调整g变红色,那么g的前一个节点为红色也违反了条件3,要继续向上调整

_2.u为nullptr或黑色(都不需要向上调整)

_-1.u为nullptr

旋转and变色

单旋,p为黑色,g为红色,原本违反条件3的即不违反3还保持了黑色节点个数相同,同时也不用向上调整,因为p为根还是黑色,不管p上面的节点是黑色还是红色都不会违反条件3

双旋,c变黑色,g变红色,原本违反条件3的即不违反3还保持了黑色节点个数相同,同时也不用向上调整,因为c为根还是黑色,不管c上面的节点是黑色还是红色都不会违反条件3

_-1.u为黑色

这种情况下c一定为下面调整上来的红色

若c为新插入节点的红色,那么在插入之前就已经不是红黑树了,因为p路径只有一个黑节点,u路径有两个黑色节点,已经违反条件4

就像上面这个图,没有违反条件4,但违反了条件3,这时要旋转and变色

单旋and变色

p为黑色,g为红色,即解决了条件3还保持了条件4

双旋and变色

c变黑色,g变红色,即解决了条件3还保持了条件4。

以上就是红黑树旋转and变色的情况

最后要让根节点的颜色变黑色。

相关文章:

  • 使用C语言实现字符串拷贝与程序编译全解析 ——从strcopy实现到程序内存布局,一文掌握核心知识
  • FPGA通信之VGA
  • 【结构体宏定义】C语言结构体与宏定义:传感器配置的巧妙结合
  • transformer网络
  • 全栈开发中主流 AI 编程辅助工具的实践与对比分析20250522
  • thinkpad x220降频到0.7Ghz解决办法
  • 小白的进阶之路系列之三----人工智能从初步到精通pytorch计算机视觉详解下
  • Python 训练 day31
  • Python打卡训练营day32
  • 改写文章打造原创内容,ai智能改写工具在线高效完成!
  • 点云技术原理概要
  • Oracle 的V$ACTIVE_SESSION_HISTORY 视图
  • 大语言模型 18 - MCP Model Context Protocol 基本项目 测试案例
  • 技术篇-2.3.Golang应用场景及开发工具安装
  • 数巅智能亮相中国石油石化企业信息技术交流大会 以大模型能力驱动能源行业数智化升级
  • AIGC消除软件概览:优化内容创作的新工具
  • 嵌入式STM32学习——串口USART 2.3(串口发送数据控制LED灯)
  • [初阶--使用milvus向量数据库实现简单RAG]
  • 云曦25年春季期中考核复现
  • 滚珠导轨:重构精密仪器传动架构,开启微纳世界
  • wordpress新闻网站主题/关键词优化推广公司哪家好
  • 网站建设工资/十大计算机培训学校
  • 乡镇人大网站建设情况汇报/搜索引擎优化简历
  • 做情趣用品网站需要哪些资质/企业专业搜索引擎优化
  • 做互助盘网站找哪家好/家庭优化大师免费下载
  • 建设官方网站的请示/网络营销专业学什么课程