技术栈
红黑树
白杨尚青
2 天前
开发语言
·
c++
·
迭代器
·
stl
·
set
·
map
·
红黑树
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
这里是白杨。上一篇把红黑树的插入、旋转、变色和验证写完了;这一篇把它变成能直接用的容器:bit::set 和 bit::map。
白杨尚青
6 天前
开发语言
·
数据结构
·
c++
·
stl
·
红黑树
·
平衡二叉树
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
这里是白杨。上一篇 AVL 用“高度差 ≤ 1”把树压得很平,代价是插入、删除时旋转频繁。这一篇换一条路:不直接管高度,用颜色约束间接控制黑高——这就是红黑树。
凉茶钱
12 天前
开发语言
·
c++
·
红黑树
红黑树:用“颜色”换“平衡”,set 与 map 的底层发动机
上一篇把 AVL 树从头到尾手写了一遍,结论落在最后一张对比表上:AVL 严格平衡、查找略快,但增删时旋转多;红黑树用更少的旋转换稳定性能,成了 STL set、map 的底层。这篇就顺着那句话,把红黑树彻底挖开。
Bshaya_
16 天前
数据结构
·
红黑树
·
二叉搜索树
·
平衡树
·
插入逻辑
红黑树详解:概念、规则与插入实现
也是以二叉搜索树为基础的,每个节点单位以pair储存他的每个结点增加一个存储位来表示结点的颜色,可以是红色或者黑色。通过对任何一条从根到叶子的路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是接近平衡的。
CodeYp2019
16 天前
开发语言
·
c++
·
红黑树
第19讲:封装红黑树实现 mymap 和 myset
SGI-STL30 版本源代码中,map 和 set 的源代码位于 map/set/stl_map.h、stl_set.h、stl_tree.h 等几个头文件中。
CS创新实验室
1 个月前
数据结构
·
算法
·
红黑树
·
408
·
计算机考研
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
408 · 数据结构(45 分)· 树。红黑树的五条性质、与 AVL 的取舍、旋转与染色,是查找章节的高频选择题来源。
多弗朗皮卡丘
1 个月前
开发语言
·
c++
·
红黑树
C++ 红黑树
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
Tairitsu_H
2 个月前
开发语言
·
c++
·
set
·
map
·
红黑树
·
模拟实现
[C++] 深入理解红黑树:封装set与map
在GCC 15.2.0版本中,map和set的源代码在map/set/stl_map.h/stl_set.h/stl_tree.h等⼏个头⽂件里。通过阅读源代码我们可以大致理解,set和map的底层套用了同一个红黑树的模板。其中,为了兼容map的key-value键值对,set内部将key同时命名为key和value,以便于后续调用红黑树统一操作,实现了代码复用。以下是源码的大致框架:
qeen87
3 个月前
开发语言
·
数据结构
·
c++
·
算法
·
红黑树
【数据结构】红黑树的算法原理解析与实现
前言:上一篇文章我们实现了AVL树,所以关于本篇的旋转部分我就不做解释了,在我上一篇文章【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
阿pin
3 个月前
java
·
python
·
算法
·
红黑树
Java随笔-红黑树
红黑树是一种自平衡二叉搜索树(Self-balancing Binary Search Tree),由 Rudolf Bayer 于 1972 年发明。它通过在节点上增加一个"颜色"属性(红或黑),并在插入和删除时遵循特定规则,确保树始终保持近似平衡,从而保证查找、插入、删除操作的时间复杂度都是 O(log n)。
lingran__
3 个月前
数据结构
·
c++
·
面试
·
红黑树
·
二叉搜索树
·
平衡二叉树
·
stl底层
C++ 高阶数据结构:红黑树万字详解|完整原理推导 + 插入实现 + 完整性校验【STL 底层】
目录引言:红黑树的概念1.红黑树的规则2.思考:红黑树如何确保最长路径不超过最短路径的2倍3.红黑树的效率
lingran__
3 个月前
开发语言
·
c++
·
stl
·
set
·
map
·
红黑树
·
关联式容器
C++ STL 关联式容器万字详解:set、multiset、map、multimap|接口用法 + 易错点 + 力扣真题实战
目录引言:1.序列式容器和关联式容器2.set系列的使用2.1.set和multiset参考文档2.2.set类的介绍
消失的旧时光-1943
4 个月前
数据库
·
b树
·
mysql
·
红黑树
MySQL 索引原理系列(二·补充):MySQL 为什么不用红黑树,而用 B+树?
上一篇我们讲清楚了 B树和 B+树之间的区别:但这里很容易产生一个新的疑问:红黑树的查询效率也很高,Java 中的 TreeMap、Linux 中的一些数据结构也会使用红黑树,为什么 MySQL 索引不使用红黑树,而要使用看起来更加复杂的 B+树?
拂拉氏
4 个月前
数据结构
·
算法
·
红黑树
【知识讲解】 红黑树的删除讲解
目录前言Part1. 前置知识Part2. 删除逻辑分析(一开始删除的情况,非向上调整)Part2.1. 删除
Irissgwe
5 个月前
数据结构
·
c++
·
算法
·
二叉树
·
stl
·
c
·
红黑树
map/set/multimap/multiset 的底层逻辑与实现
目录底层原理红黑树红黑树结构红黑树插入情况一: cur为红,p为红,g为黑,u存在且为红。情况二: cur为红,p为红,g为黑,u不存在/u存在且为黑
少司府
5 个月前
开发语言
·
数据结构
·
c++
·
b树
·
二叉树
·
红黑树
C++进阶:红黑树
◆博主名称:少司府欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆⭐数据结构系列个人专栏:
啦啦啦啦啦zzzz
5 个月前
数据结构
·
c++
·
红黑树
数据结构:红黑树理论
我想本篇文章红黑树的故事应该从一个实际的应用讲起。如果我们选择用AVL树来存储数据,会有几个缺点:首先AVL树的条件太过于苛刻,平衡系数如果大于2,那么我们就需要进行调整,也就是说,如果运气不是很好,我们只要插入两个数,我们就需要调整一次二叉树,很浪费时间。所以我们想要放宽这个条件。放宽这个条件有两个做法,一个是把平衡系数调大,一个是让这个树变成完全二叉树,尽量不去调整二叉树,每个结点可以存放多个数据。
Brilliantwxx
5 个月前
数据结构
·
c++
·
笔记
·
算法
·
青少年编程
·
红黑树
【C++】 深入理解红黑树:实现与原理全解
RBTree · e4a5c71 · 加油少年/CCCCC - Gitee.com二叉搜索树满足:致命缺陷:数据有序插入时,BST 会退化成链表,查找 / 插入 / 删除复杂度从 O(logn) 暴跌到 O(n)。
长谷深风111
6 个月前
线程安全
·
红黑树
·
hashmap
·
哈希冲突
·
负载因子
·
数组链表
·
哈希扰动
JDK8 HashMap底层结构解析
JDK 8 中 HashMap 的数据结构是数组+链表+红黑树。在知道了其底层的结构之后,还需要知道这每一个结构的作用以及他们之间的相互转换关系
不知名的忻
6 个月前
算法
·
红黑树
红黑树(简易版)
红黑树 ≈ 近似平衡的二叉查找树,保证查找 O(log n)插入删除多 → 红黑树;查询多 → AVL