数据结构-红黑树

二叉搜索树

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

最佳时间复杂度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时候变成红黑树而不是自平衡二叉树或二叉搜索树?

相关推荐
Brilliantwxx1 小时前
【算法从零到千】【59-65】链表专题
数据结构·链表
重生之后端学习2 小时前
53. 最大子数组和[中等]✅
java·数据结构·算法·leetcode·职场和发展
小手cool4 小时前
使用递归对数组进行反转操作
java·数据结构·算法
码行山野赴时序归途4 小时前
从暴力到最优:三道 C 语言入门题的解法思路
c语言·开发语言·数据结构·算法·leetcode·排序算法
CarIise6 小时前
C语言结构体与链表
数据结构·算法
charlie1145141918 小时前
deque、list 与 forward_list:vector 之外的三个选择
开发语言·数据结构·c++·list·开源项目
动词ing8 小时前
【学习笔记】数据结构(数组滑动窗口+无重复字符的最长字串题目)
数据结构·笔记·学习
拓人间精准客9 小时前
ToB 销售获客避坑指南:如何用全维度大数据实现降本增效
大数据·数据结构·单例模式
小七在进步9 小时前
数据结构:快速排序
数据结构·算法·排序算法
lzx_00210 小时前
list(全)
数据结构·list