数据结构-红黑树

二叉搜索树

右节点都大于父节点,左节点都小于父节点

最佳时间复杂度O(log n),树的深度是2的n次方

缺点:连续数值容易变成链表

自平衡二叉树

是二叉搜索树的一种

有规则:左右深度相差小于等于1

解决了二叉搜索树的缺点,最差也是O(log n)

但是 自旋耗时

红黑树

是平衡二叉树的一种,不过没有那么严格,红黑树有自己遵循的平衡规则。

红黑树深度最多相差一倍 (红黑树要实现的目标)

规则:

根节点是黑节点

叶子节点(null节点)是黑节点(一半)

红节点的子节点是黑节点(不能两个连续的节点是红节点)

新插入的节点是红节点(但是会有平衡过程的变化)

从任意一个节点出发到子节点的所有路径黑节点数量相同

如果去除红节点就是自平衡二叉树

假设有n个节点

红节点就是nr,黑节点就是nb

n=nr+nb

把红节点去掉就是一个自平衡二叉树。时间复杂度就是O(log nb)。然后把红节点加上,最复杂就是红黑交替 时间复杂度为O(2log nb)nb最差等于n。

常量可以去除,所以时间复杂度就是O(log n)。

红黑树的时间复杂度在不变的情况下简化了插入。所以要优于平衡二叉树。

红黑树的插入规则总结

​​​​​​​X

​​​​​​​

hashmap中为什么在数量大于8时候变成红黑树而不是自平衡二叉树或二叉搜索树?

相关推荐
he___H4 小时前
数据结构-移位
数据结构
电子_咸鱼5 小时前
LeetCode——Hot 100【电话号码的字母组合】
数据结构·算法·leetcode·链表·职场和发展·贪心算法·深度优先
仰泳的熊猫5 小时前
LeetCode:785. 判断二分图
数据结构·c++·算法·leetcode
haoly19897 小时前
数据结构和算法篇-归并排序的两个视角-迭代和递归
数据结构·算法·归并排序
小梁努力敲代码7 小时前
java数据结构--List的介绍
java·开发语言·数据结构
Code小翊10 小时前
归并排序基础理解
数据结构·算法·排序算法
.小小陈.10 小时前
数据结构2:单链表
c语言·开发语言·数据结构·笔记·学习方法
草莓工作室10 小时前
数据结构4:线性表3-链式存储的线性表
数据结构
雾时之林10 小时前
数据结构--单链表
数据结构
Camel卡蒙10 小时前
数据结构——二叉搜索树Binary Search Tree(介绍、Java实现增删查改、中序遍历等)
java·开发语言·数据结构