首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >hashmap底层1.8有红黑树,什么是红黑树?一文了解

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

作者头像
冷环渊
发布2022-03-07 16:11:58
发布2022-03-07 16:11:58
7470
举报

红黑树

是一种特殊的平衡二叉树

满足如下几个条件:

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在右侧

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

以插入19举例

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 红黑树
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档