数据结构——红黑树

什么是红黑树

是二叉搜索树和平衡二叉树的自然拓展
本身是二叉搜索树,结点中增加一个颜色的属性
构造和删除比AVL简单
插入流程和AVL一样,先插入再调整
红黑树的调整可以是染色或者是旋转,只有5种情况,并且只有2种情况要旋转

红黑树的性质

  • 每个结点是红色或者黑色
  • 根结点是黑色
  • 度为0和1的结点的空指针域成为空叶子,也是黑色的
  • 不存在两个相邻的红结点(即红结点的父结点和孩子结点均是黑色) ☆☆☆ \color{red}{ ☆ ☆ ☆ } ☆☆☆
  • 对每个结点,从该结点到任一叶结点的简单路径上,所含黑结点的数目相同 ☆☆☆ \color{red}{ ☆ ☆ ☆ } ☆☆☆

下图是一颗红黑树:

结论

  1. 从根到叶结点的最长路径不大于最短路径的2倍,即 最短的路径 ∗ 2 ⩽ 最长的路径 \color{red}{最短的路径*2\leqslant最长的路径 } 最短的路径2最长的路径
  2. 有n个内部结点的红黑树的高度 h ⩽ l o g 2 ( n + 1 ) h\leqslant log_{2}(n+1) hlog2(n+1)
  3. 新插入到红黑树红的结点为红结点

红黑树的建树

插入结点默认是红色,此时所有路径上的黑色结点数目不变,仅在出现连续两个红色结点时才需要调整,而且这种调整也比较简单。
image.png

image.png

image.png

更多参考

https://zhuanlan.zhihu.com/p/139907457?utm_source=com.tencent.tim

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值