hashmap底层1.8有红黑树,什么是红黑树?一文了解

红黑树是一种自平衡二叉查找树,其每个节点都有红色或黑色。插入新节点时,若导致不平衡,通过两种方式恢复:旋转和变色。插入后可能的情况包括根节点插入、父节点为黑色和红色。对于红色父节点,若叔父节点也为红色,则变色调整;若叔父节点为黑色,根据节点位置进行旋转。本文详细阐述了插入过程及恢复平衡的策略。
摘要由CSDN通过智能技术生成

红黑树

是一种特殊的平衡二叉树

满足如下几个条件:

1、结点是红色或黑色的
2、根结点始终是黑色的
3、叶子结点也都是黑色的 (当红色结点无左右孩子时,补足空结点是黑色的)
4、红色结点的子结点都是黑色的
5、对任一结点,到叶子结点的所有路径,都包含相同数目的黑色结点

特征: 从根结点到叶子结点的最长路径,不会超过最短路径的两倍

当插入新结点使红黑树失去平衡时,通过两种方式恢复平衡:

旋转和变色 (红变黑 黑变红)

可视化网站:树结构可视化

插入结点到红黑树的逻辑

约定 新插入的结点都设为红色的,可以简化树的平衡过程

假设要插入的结点是X 父结点是P 祖父结点是G 叔父结点是U

1)X是根结点
放入根结点中,将颜色变为黑色

2)X的父结点是黑色的

3)X的父结点是红色的

​ a) 如果叔父结点U也是红色的,可以推断出祖父结点G必是黑色的

​ 当增加新结点时 造成两个红色结点相邻 此时使用变色处理
​ P和U由从红色变为黑色 G由黑色变为红色 如果G是根结点 再次恢复为黑色

​ b) 如果叔父结点U是黑色的,并且X在左侧

​ 以P为中心,向右旋转,G和U下移,此时如果P有右孩子,右孩子R移动到G的左孩子处
​ 将P变为黑色 将G变为红色
在这里插入图片描述

在这里插入图片描述

此为举例 插入16的场景

c) 如果叔父结点U是黑色的,并且X在右侧

​ 先通过左旋 恢复成第二种情况 然后再右旋和变色

image-20210107164330177

image-20210107164537097

以插入19举例

image-20210107164619134
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值