红黑树

平衡二叉树

任意节点的左右子树高度相差不能大于1

红黑树

是一种不严格的平衡二叉树,一类节点被标记为红色,一类节点被标记为黑色,同时满足以下几个要求:

  • 根节点是黑色的
  • 每个叶子节点都是黑色的空节点,也就是说,叶子节点不存储数据
  • 红色节点不能相邻
  • 每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点

红黑树近似平衡

要想分析红黑树是否是近似平衡的,只要分析红黑树的高度大约是logn就可以了。
首先把红色节点去掉,没有父节点的,直接拿祖父节点,那么就会出现四叉树,肯定会比完全二叉树的高度要小,所以去掉红色节点的红黑树的高度不会超过logn,再把红色节点加回去,红色节点不相邻,那么最多也就是2logn,红黑树的性能下降的不多。

红黑树的操作

插入操作

插入的节点必须是红色的,新插入的节点都是放在叶子节点上。

  • 如果插入的节点的父节点是黑色的,不需要调整
  • 如果插入的节点是根节点,直接改变颜色为黑色就行

变换规则:
旋转和颜色变换规则:所有插入的点默认为红色

  1. 变颜色的情况:当节点的父亲是红色,且它的祖父节点的另一个子节点(叔叔节点)也是红色
    1 把父节点设为黑色
    2 把叔叔节点设为黑色
    3 把祖父也就是父亲的父亲设为红色

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值