【数据结构】能看懂的红黑树

1 总体逻辑

1.2 二叉树

二叉树中,一个根节点最多有两个子节点。

1.3 二叉排序树 Binary Search Tree

二叉排序树是一个排好序的二叉树。且水平方向来看,总有

左节点 < 右节点

简单记忆其规律,可以在脑海中想象一个大大的小于号:

(图片来自https://icons8.com)

二叉排序树最大的问题就是不平衡。可以先阅读这篇文章:二叉排序树和平衡二叉树

1.4 红黑树 Black Red Tree

红黑树是二叉排序树的一种。它是为了解决二叉排序树不平衡的问题,以提高增删改查的效率和时间稳定性。说白了,红黑树是为了弥补二叉排序树的缺点而提出的。最近在读Linux相关书籍,了解到Linux CFS进程调度算法就是使用红黑树来组织进程实例的。

红黑树模型,将所有的二叉树节点分为两种颜色,附加上一些基于颜色的限制规则,基于这些规则调整树的结构,即可保持树的平衡。
规则/性质有以下⑤条:

  1. 每个结点要么是红的要么是黑的。
  2. 根结点是黑的。
  3. 每个叶结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
  4. 如果一个结点是红的,那么它的两个儿子都是黑的。
  5. 对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。

这五条规则/性质和天书一样,我们应该如何理解?

顺便说一句,直接上来就说⑤个规则,然后堆一堆代码的所谓教程,就是我们熟悉又厌恶的填鸭式教育。

我们下面尽可能从本质上去理解红黑树。


2 优秀资料


3 个人理解

3.1 2-3树与二叉树
3.2 2-3树与红黑树

红色节点代表了这个节点与父节点组成3节点。
黑色节点代表了这个节点是一个独立的2节点。

2-3树中,3节点用一个圆圈把两个节点圈起来;
在红黑树中,3节点用黑色父节点+红色子节点表示。

所以红黑树的插入,删除操作,原理和2-3树是一样的,只是把画圈的操作改为给节点染色了。
给节点重新染色的过程就是树的深度调整过程。

3.3 举例
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

撬动未来的支点

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

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

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

打赏作者

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

抵扣说明:

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

余额充值