C++——进阶数据结构
文章平均质量分 95
以C++实现的进阶数据结构,包括二叉搜索树,AVL树,红黑树,map/set,unordered_map/set,哈希表,图,B树,跳表及一些经典OJ题
Lzc-c
书到用时方恨少,事非经过不知难。
gitee:https://gitee.com/Lzc-c
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++进阶——位图+布隆过滤器+海量数据处理
有一些场景下面,有。原创 2025-03-30 22:10:23 · 860 阅读 · 53 评论 -
C++进阶——封装哈希表实现unordered_map/set
与红黑树封装map/set基本相似,只是unordered_map/set是单向迭代器,模板多传一个HashFunc。原创 2025-03-29 12:03:06 · 1229 阅读 · 43 评论 -
C++进阶——哈希表的实现
乘法散列法对哈希表大小 M 是没有要求的,假设 M 为 1024,key 为 1234,A = 0.6180339887,A * key = 762.6539420558,取小数部分为 0.6539420558,M × ((A × key) % 1.0) = 0.6539420558 * 1024 = 669.6366651392,那么 h(1234) = 669。假设 P=17,M=6,a=3,b=4,则 h_34(8) = ((3 × 8 + 4) % 17) % 6 = 5。原创 2025-03-25 22:28:21 · 1195 阅读 · 41 评论 -
C++进阶——封装红黑树实现map和set
(整个子树已经访问完了,如果这个子树是外面的右子树,那么外面一层的子树也访问完了,直到子树是外面子树的左子树,左子树访问完了,访问中),就访问,2. 源码中的pair的<比较,比较了key和value,但是。MySet是为了兼容MyMap,所以也要实现。),相当于外层左边的子树访问完了,然后访问中。然后更新迭代器中的节点指针,返回*this。修改RBtree中的insert返回值为。,在右子树中进行,左中右,访问。1. 这里相比源码调整一下,当左为空,表示左访问完了,就是走右中左,基本相同。原创 2025-03-22 16:48:26 · 1289 阅读 · 32 评论 -
C++进阶——红黑树的实现
红黑树是一种自平衡的二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是红色或黑色。通过对从根节点到叶子节点的路径上的节点颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,因此它是近似平衡的。原创 2025-03-20 18:31:55 · 875 阅读 · 32 评论 -
C++进阶——AVL树的实现
AVL 树是一种自平衡二叉搜索树,满足以下性质:它是一棵空树,或者:它的左右子树都是 AVL 树。左右子树的高度差(平衡因子)的绝对值 <= 1。原创 2025-03-17 21:36:14 · 1203 阅读 · 0 评论 -
C++进阶——map和set的使用
1. set的声明如下,T就是set底层关键字key的类型。2.set默认要求key支持小于比较(升序),如果不支持或者想按自己的需求走可以自行实现仿函数传给第二个模版参数。3. set底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第三个参 数。4. 一般情况下,我们都不需要传后两个模版参数。5.set底层是用红黑树实现,增删查效率是O(logN)。迭代器遍历走的是搜索树的中序,所以是有序。原创 2025-03-15 23:37:53 · 1189 阅读 · 3 评论 -
C++进阶——二叉树OJ题
本文总结了二叉树相关的7个经典算法问题及解法:1. 层序遍历(BFS)使用队列按层输出节点值;2. 最近公共祖先(LCA)两种解法:子树判断法和路径记录法;3. 二叉搜索树转双向链表通过中序遍历调整指针;4. 前序+中序序列重建二叉树利用前序定位根节点,中序分割左右子树;5-7. 三种非递归遍历(前序/中序/后序)均提供两种实现:统一标记法和优化栈操作法,其中后序遍历还通过反转前序结果实现。所有解法均给出C++代码实现,涵盖队列、栈、递归等核心数据结构应用。原创 2025-03-14 11:49:55 · 1232 阅读 · 0 评论 -
C++进阶——二叉搜索树
在我写BinarySearchTree的拷贝构造时,发现为什么,_root明明是私有的。这种设计是为了支持类的封装性和实现细节的隐藏,同时。例如:拷贝构造函数需要访问被拷贝对象的内部状态。赋值运算符需要访问右操作数的内部状态。比较运算符可能需要访问两个对象的内部状态。原创 2025-03-09 17:58:25 · 743 阅读 · 1 评论
分享