5、红黑树-下

自平衡

红黑树能够自平衡,依赖自身三种操作:
左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点 右子节点的左子节点变为旋转节点的右子节点,左子节点保持不变

右旋:以某个节点作为支点(旋转节点),其左子节点变为旋转节点的父节点 左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变

变色:节点的颜色由红变黑或由黑变红

节点描述:
在这里插入图片描述

红黑树插入场景

在这里插入图片描述
P - 父节点
S - 叔叔节点(跟父节点同级)
PP - 祖父节点

注意:方便插入后匹配规则,每次插入时把当前节点临时设为红色。然后套用规则。
1、作为根节点,直接插入 当前为黑色
2、插入节点的父节点为黑色,直接插入,当前节点为红色
3.1 叔叔节点存在且为红色:
当前节点为红色
父节点和叔叔节点设置为黑色
祖父节点设置为红色。以祖父节点为插入点,套用规则。
3.2 叔叔节点不存或者为黑节点
a、父节点是祖父节点的左节点—插入节点为父节点的左节点
插入节点为红色
父节点设为黑色
祖父节点设为红色,对祖父节点右旋
b、父节点是祖父节点的左节点—插入节点为父节点的右节点
将父节点左旋,然后插入当前节点得到上面情景,套用上面规则。
c、父节点是祖父节点的右节点—插入节点为父节点的右节点
当前插入节点为红色
父节点变黑色
祖父节点变成红色,祖父节点(镜像)左旋一次。
d、父节点是祖父节点的右节点—插入节点为父节点的左节点
当前插入节点红色
对父节点右旋一次,得到上面结果,套用规则。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值