
数据结构
文章平均质量分 82
Dawn-K
Don't understand? Then understand
展开
-
C语言版二叉树构造&&遍历
二叉树构造&&遍历基于二分搜索的启发,将查找的复杂度由朴素的O(n) 降低至 O(log n),故产生此数据结构 : 二叉树。二叉树有两种构造方式,一种是顺序存储格式,也就是用数组来存储;另一种是链表。他们的优缺点和线性表中几乎一样:数组支持随机存取,实现简单,结构直观,缺点是添加删除不便,而且空间固定,不易修改,要么不足,要么浪费。链式的结构复杂,遍历需要算法,...原创 2018-10-07 19:23:37 · 3159 阅读 · 1 评论 -
Trie 树
Trie 树参考资料介绍Trie树是一种高级数据结构,用于解决多模式串匹配问题(KMP算法是用以解决单模式串匹配),其主要思想是利用树形结构,(树上除根节点外,每一个节点都对应着一个字符),使得前缀相同的单词共用前缀部分的节点.加快匹配速度.模板// 个人倾向于使用数组形式的字典树,动态节点类型不好debug//对于字符串比较多的要统计个数的,map被卡的情况下,直接用字典树//很...原创 2019-07-31 20:28:18 · 157 阅读 · 0 评论 -
ST表&LCA&RMQ
SparseTableRMQ问题RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。算法朴素(即搜索),O(n)-O(qn)online。线段树,O(n)-O(qlogn)online。(这个稍后补...原创 2019-07-30 21:48:35 · 789 阅读 · 0 评论 -
单调栈&单调队列
单调栈&单调队列介绍单调栈和单调队列是两种很简单,但是很强大的数据结构.一般不会直接出裸题,常常作为优化手段使用.(多见于dp)单调队列实际上是升级版的单调栈.单调栈单调栈可以在O(n)时间复杂度下完成以下操作对于给定的a[ ]数组,在O(n)时间内生成数组 L[ ],其中L[i]表示a[i] 左边/右边 第一个 小于/大于 a[i]的元素的下标(常记录下标,可以使得操作更灵...原创 2019-07-30 21:46:54 · 384 阅读 · 0 评论 -
树状数组
树状数组十年岐路,空负曲江花介绍参考资料树状数组就是以数组的形式来模拟树,在代码很简洁的情况下,能起到部分代替线段树的效果.而且此算法常数较小,空间开销也很小,是一个非常轻量级的数据结构.思想图中黑色的是原数组,红色的是树状数组.我们发现树状数组的空间开销是O(n)的.我们以八个元素(从1开始记数会比较方便)求和为例.假设原数组是a[],树状数组是c[].我们不难发现C[1...原创 2019-07-30 21:45:43 · 225 阅读 · 0 评论 -
并查集进阶
并查集进阶文章目录并查集进阶绪论普通并查集初始化搜索合并带权并查集初始化搜索合并种类并查集例题HDU3047(种类并查集)HDU3635(带权并查集)POJ1988(带权并查集)POJ2912(种类并查集)POJ1456(普通并查集)绪论我本来以为并查集是一种很简单的数据结构,但是实在是被kuangbin的专题虐的死去活来,故在此总结一下并查集目前有三部分: 普通并查集,带权并查集,种类并...原创 2019-01-23 21:30:24 · 693 阅读 · 6 评论 -
[数据结构复习]排序
排序基本概念排序:给定一组记录的集合{r1, r2, ……, rn},其相应的关键码分别为{k1, k2, ……, kn},排序是将这些记录排列成顺序为{rs1, rs2, ……, rsn}的一个序列,使得相应的关键码满足ks1≤ks2≤……≤ksn(称为升序)或ks1≥ks2≥……≥ksn(称为降序)。正序:待排序序列中的记录已按关键码排好序。逆序(反序):待排序序列中记录的...原创 2019-01-08 00:23:17 · 526 阅读 · 0 评论 -
[数据结构复习]图论
图文章目录图绪论一笔画问题巧渡河问题逻辑结构定义结构对比概念图的存储邻接矩阵基本思想特点邻接表基本思想十字链表邻接多重表DFS&&BFS连通性生成树最小生成树MSTPrim算法Kruskal 算法拓扑排序AOV网拓扑排序基本思想实现AOE网定义性质事件最早发生时间ve[k]事件的最迟发生时间vl[k]活动的最早开始时间e[i]活动的最晚开始时间l[i]最短路径单源最短路——Dij...原创 2018-12-19 00:25:55 · 787 阅读 · 0 评论 -
树和二叉树
树和二叉树文章目录树和二叉树@[toc]树的基本术语二叉树定义特点特殊二叉树斜树满二叉树介绍特点完全二叉树定义特点基本性质二叉树的顺序存储结构二叉树的链式存储表示二叉链表基本思想结构特点三叉链表基本思想结构双亲链表结构线索链表二叉树遍历遍历实现由遍历序列求二叉树二叉树递归应用线索二叉树概念线索链表树的存储结构双亲表示法孩子链表表示法孩子兄弟表示法森林和二叉树的转化森林化二叉树转化思路具体操作二...原创 2018-12-17 20:54:53 · 402 阅读 · 0 评论 -
二叉树递归应用
二叉树递归应用此文档主要是用来记录二叉树的一些递归操作.文章目录二叉树递归应用结构建树求叶子节点个数求二叉树深度删除指定元素及其子树求先序序列中第k个位置的节点的值根据前缀表达式建树中缀表达式建树结构typedef struct node { // 二叉树节点结构 char data; struct node *lchild; struct node *rchild...原创 2018-12-16 19:24:09 · 355 阅读 · 0 评论 -
[数据结构复习]查找
查找文章目录查找概述线性表查找顺序查找改进后的顺序查找优点缺点折半查找条件基本思想实现折半查找判定树定义构造性能分析索引顺序查找查找过程要求树表查找动态查找表的特点二叉排序树性质查找路径插入构造删除三种情况删除叶子节点删除有一棵子树的节点删除有两棵子树的节点性能分析平衡二叉树定义基本思想调整性能B-树定义&&查找散列表基本思想散列函数数字分析法折叠法除留余数法随机数法总结冲突处理...原创 2018-12-20 14:52:00 · 531 阅读 · 0 评论 -
大毛数蚂蚁(法里数列、二分搜索)
大毛数蚂蚁题干大毛家的后花园有两个蚂蚁王国:A国和B国。现在两个王国即将开战,大毛前去观战。大毛以非人的动态视力分别数出了两个王国的蚂蚁士兵数量,记为a和b。定义双方的实力对比为a:b。大毛虽然得到了双方蚂蚁士兵的精确数量,但由于a和b数值太大,难以一眼看出它们的关系。大毛正想着怎么把蚂蚁塞进饲养员的被窝里,并没有心思去理解这么复杂的比例。因此大毛希望你能用两个不超过L的数字a’和b’代替a和...原创 2018-12-02 15:04:51 · 553 阅读 · 0 评论 -
线性基入门
线性基参考资料参考资料2模板来源概述线性基是一种擅长处理异或问题的数据结构.设值域为[1,NNN],就可以用一个长度为⌈log2N⌉\lceil \log_2N \rceil⌈log2N⌉的数组来描述一个线性基。特别地,线性基第iii位上的数二进制下最高位也为第iii位。性质原序列里面的任意一个数都可以由线性基里面的一些数异或得到(也能异或得到一些不存在于集合的数)线性基...原创 2019-09-16 21:20:56 · 302 阅读 · 0 评论