红黑树

红黑树:

1.)带节点颜色属性的二叉搜索树
2.)确保树的高度为 h=O(logn)

红黑树属性:

  1. 每个节点要么是红色,要么是黑色
  2. 每个叶子节点(一定是NULL指针)一定是黑色
    • 这意味着每个“真正”的节点都有两个孩子
  3. 红色节点的两个孩子都是黑色
    • 这意味着树的任何路径上不可能存在两个连续的红色节点
  4. 从任意某个节点出发,到所有能到达的叶子节点的路径上的黑色节点数量相等
  5. 根节点是黑色

黑色节点的高度:

黑色节点的高度的定义为:黑色节点到叶子节点的路径长度
一个高度为 h 的节点,其黑色节点高度h/2
可证明:一个拥有 n 个节点的红黑树,起高度h2log(n+1)
证明:

红黑树最差情况下的耗时

红黑树示例:

红黑树示例

如何插入新的节点: 8
插入8

如何插入新的节点: 11
插入11
节点 11 不能为红色,违反第三条属性,一个红色节点的两个孩子节点都必须是黑色
节点 11 不能是黑色,违反第四条属性,从节点到所有叶子节点上的黑色节点的数量必须相等
所有,只能重新定义树的颜色了:
这里写图片描述

如何插入新的节点: 10

红黑树:旋转

旋转

这里写图片描述

旋转示例

这里写图片描述
相对于 9 <script type="math/tex" id="MathJax-Element-7">9</script>这个节点左旋
这里写图片描述

红黑树:插入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值