【数据结构】红黑树RBTree——平衡二叉排序树(C语言)

10 篇文章 4 订阅 ¥9.90 ¥99.00
本文详细介绍了红黑树这种平衡二叉排序树的平衡条件、优点以及插入和删除的调整策略。在插入调整中,主要解决两红相邻的情况;删除调整则针对双重黑节点进行处理,确保路径上黑色节点数量平衡。通过旋转和颜色调整,红黑树能高效保持平衡,减少旋转操作。
摘要由CSDN通过智能技术生成

红黑树——平衡二叉排序树

1.平衡条件

  1. 每个结点非黑即红
  2. 根结点是黑色
  3. 叶子节点(NIL)是黑色
  4. 如果一个节点是红色,则两个子节点都是黑色
  5. 从根结点出发到所有叶子节点路径上,黑色节点数量相等

最长路径的长度是最短路径的两倍

  • 最短路径:黑黑黑…
  • 最长路径:黑红黑红黑红…

任何的AVL树都可以变为一棵红黑树

红黑树相比于AVL树的条件更松散,需要更少的旋转操作就能达到平衡

调整方法:旋转 调整颜色

2.优点

需要更少的旋转操作 旋转操作需要进行地址的操作 两个相邻的节点在内存中的地址不是连续的 对随机地址访问就是cpu对内存的随机访问

修改颜色更加简单

现在的cpu对数据读取的加速策略:读取i位置的元素时会一次性读取相邻位置的元素 ,当顺序访问数据时 cpu效率很高

3.调整策略

(红黑黑)根结点由黑变红=经过此节点所有路径黑色节点数量-1=(黑红红)根结点的两个子节点由黑变红

  1. 插入调整站在祖父节点看!!!
  2. 删除
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙diao网友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值