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

1 2 3 4 5顺序插入,形成一个红黑树

红黑树的特性与优点

红黑树是一种自平衡的二叉搜索树,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在 O(log n)。其核心特性如下:

  1. 每个节点要么是红色,要么是黑色
  2. 根节点和叶子节点(NIL节点)是黑色
  3. 红色节点的子节点必须是黑色(不能有两个连续的红色节点)。
  4. 从任一节点到其每个叶子的路径都包含相同数目的黑色节点(黑高平衡)。

这些特性使得红黑树在插入、删除时通过颜色调整和旋转操作维持平衡,避免了BST的退化问题。

顺序插入12345

       2(B)/   \1(B)  4(B)/ \3(R)5(R)

步骤解释:

  1. 插入1:根节点,设为黑色。

    • 1(B)
  2. 插入2:作为1的右子节点,设为红色。无冲突。

      1(B)\2(R)
    
  3. 插入3:作为2的右子节点,设为红色。此时父节点2(红)与子节点3(红)冲突。

    • 调整:左旋祖父节点1,将2提升为根并设为黑色,1和3设为红色。
        2(B)/   \1(R)  3(R)
    
  4. 插入4:作为3的右子节点,设为红色。父节点3(红)与子节点4(红)冲突。

    • 调整:颜色翻转(父节点3和叔叔节点1变黑,祖父节点2变红),最后根保持黑色。
        2(B)/   \1(B)  3(B)\4(R)
    
  5. 插入5:作为4的右子节点,设为红色。父节点4(红)与子节点5(红)冲突。

    • 调整:左旋祖父节点3,将4设为黑色,3设为红色。
        2(B)/   \1(B)  4(B)/ \3(R)5(R)
    

验证规则:

  • 根为黑色:满足。
  • 红色节点无红色子节点:3®和5®的子节点均为NIL(黑)。
  • 所有路径黑色节点数相同:每条路径均为2个黑色节点(例如:2→1→NIL2→4→3→NIL)。

该结构严格遵循红黑树的五条性质,是一棵有效的红黑树。

http://www.xdnf.cn/news/5190.html

相关文章:

  • 阿里千问Qwen大模型API调用(Python版)
  • 张 SoulChat2.0:心理咨询师优化:提示词优化;构建数据集微调LLM
  • PMP-第五章 项目范围管理
  • 在资源受限设备上实现手势识别:基于包络EMG数据和实时测试的Tiny-ML方法
  • [架构之美]IntelliJ IDEA创建Maven项目全流程(十四)
  • 玩转Docker | 使用Docker部署DailyTxT日记工具
  • C语言文件流
  • 局域网常用的测速工具,Iperf3使用教程
  • QTableWidget实现多级表头、表头冻结效果
  • leetcode 349. Intersection of Two Arrays
  • 独立按键控制LED
  • [杂谈随感-13]: 人的睡眠,如何布置床的位置比较有安全?感?
  • HashMap中put()方法的执行流程
  • Python数据分析案例74——基于内容的深度学习推荐系统(电影推荐)
  • libwebsockets:高性能跨平台WebSocket库实践指南
  • C++——继承
  • 线程安全 1_线程安全
  • Ubuntu22.04怎么退出Emergency Mode(紧急模式)
  • Python环境搭建指南
  • 【redis 初阶】linux 上安装 redis
  • 电池的寿命(不清楚是什么类型/虽然有标明是贪心)
  • NVMe控制器IP设计之接口模块
  • 机器学习 day02
  • PD快充诱骗协议芯片XSP04D与主板共用一个Type-C和电脑传输数据
  • 关于Spring
  • 小刚说C语言刷题—1078求恰好使s=1+1/2+1/3+…+1/n的值大于X时n的值
  • 巡检机器人数据处理技术的创新与实践
  • 【Redis】string
  • Git 时光机:修改Commit信息
  • Java零组件实现配置热更新