数据结构-红黑树

二叉搜索树

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

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

相关推荐
思捻如枫2 小时前
C++数据结构和算法代码模板总结——算法部分
数据结构·c++
小猫咪怎么会有坏心思呢3 小时前
华为OD机考 - 水仙花数 Ⅰ(2025B卷 100分)
数据结构·链表·华为od
hn小菜鸡3 小时前
LeetCode 1356.根据数字二进制下1的数目排序
数据结构·算法·leetcode
SuperCandyXu6 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode
lyh13447 小时前
【SpringBoot自动化部署方法】
数据结构
MSTcheng.7 小时前
【数据结构】顺序表和链表详解(下)
数据结构·链表
慢半拍iii8 小时前
数据结构——F/图
c语言·开发语言·数据结构·c++
iceslime9 小时前
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
数据结构·c++·算法·算法设计与分析
witton11 小时前
美化显示LLDB调试的数据结构
数据结构·python·lldb·美化·debugger·mupdf·pretty printer
chao_78911 小时前
链表题解——环形链表 II【LeetCode】
数据结构·leetcode·链表