RB树原理与实现

一、基本概念

	红黑树是一种自平衡二叉搜索树,节点只有红色和黑色两种颜色。

二、基本性质

  1. 节点是红色和黑色;
  2. 根节点必须是黑色;
  3. 每个叶节点(NULL节点----空节点)都必须是黑色;
  4. 每个红节点的两个子节点都是黑色,即每个叶节点到根节点的路径上面不能出现连续的红色节点;
  5. 任意节点到到其对应的叶子节点的每条路径上的黑色节点的数量是一样的

三、左旋和右旋

  1. 左旋
    左旋示意图
    左旋示意图
  2. 右旋
    右旋示意图
    右旋示意图

四、插入操作

插入的节点为红色
8. case1:插入的是根节点
原树为空,此时违反了性质2
对策:直接把此节点涂黑
9. case2:插入的节点的父节点是黑色
对策:啥都不用做
10. case3:当前节点的父节点是红色且祖父节点的另一个子节点(叔叔节点)是红色
对策:将当前节点的父节点和叔叔节点涂黑,祖父节点涂红;
把当前节点指向祖父节点,从新的当前节点重新开始计算。
case3示意图
case3改变后示意图
最终结果
11. case4:当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的右子节点
对策:当前节点的父节点作为新的当前节点,以新当前节点为支点左旋
case4情况示意图
case4处理后示意图
12. case5:当前节点的父节点是红色,叔叔节点是黑色,当前节点是其父节点的左子节点
对策:父节点变为黑色,祖父节点变为红色,以祖父节点为支点右旋
case5情况示意图
case5出来后示意图

总结

	插入操作只要对照case3、4、5几种情况即可,前2种基本没啥参考价值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值