数据结构
文章平均质量分 84
数据结构总结
梨子栗子狸
这个作者很懒,什么都没留下…
展开
-
并查集
1. 简介 并查集(Union Find)也叫做不相交集合 并查集有两个核心操作 查找(Find):查找元素所在集合 合并(Union):将两个元素所在集合合并为一个集合 两种常见实现思路 QuickFind:查找 —— O(1),合并 —— O(n) QuickUnion(常用):查找 —— O(logn)可优化至O(5),合并 —— O(logn)可优化至O(5) 2. 并查集如何存储数据 以存储整形数据为例,可以用数组实现并查集。比如数组的索引表示数据,值代表所属集合。 3. 实现原创 2021-01-31 10:22:10 · 291 阅读 · 0 评论 -
堆
一、简介 是一种树状的数据结构 常见的堆有: 1. 二叉堆(完全二叉堆,其逻辑结构就是一棵完全二叉树) 2. 多叉堆 3. 索引堆 4. 二项堆 5. 斐波那契堆 6. 左斜堆 性质 1. 任意节点的值总是 >= 或 <= 子节点的值 2. 如果任意结点的值 >= 子节点的值,则称为大根堆或最大堆 3. 如果任意结点的值 <= 子节点的值,则成为小根堆或最小堆 4. 上一层的值不一定全都大于下一层的值。 二、二叉堆(数组存放,最大堆为例) 数组索引的规律(n是元素数量)原创 2020-07-31 19:09:45 · 163 阅读 · 0 评论 -
B树学习
一、什么是B树 B树又称多路平衡搜索树,多用于文件系统或数据库的实现。 B树有如下特点: 结点中可以含有多个元素,且这些元素是有序的。 拥有某些搜索二叉树的性值,比如红框中的元素均大于33,蓝框中的元素介于18到33之间。 每个结点可以有多棵子树。 平衡,所有结点的平衡因子为0。 B树的阶数为所有结点中孩子数的最大值,图中的树即为3阶B树。 二、m阶(m >= 2)B树的性质 假设一个结点存储的元素个数为x。 根结点中存储的元素个数:1 <= x <= m-1 非根结点,存储的元素原创 2020-07-25 21:29:28 · 205 阅读 · 0 评论 -
课程表
思路1:BFS 分析题目可知,某些选修课程是有选秀前提的,即必需要先完成某门课程。我们可以将课程之间的关系用有向无环图表示,判断是否可能学完所有课程就意味着这个图中不能有环,试想如果课程A与课程B构成一个环,那么他们就互为彼此的先修课程,显然这是不对的。 下面介绍一下拓扑排序,拓扑排序是针对有向无环图而言的,是一个由有向无环图中的所有顶点组成的序列,这个序列有以下要求: 1. 每个顶点在序列当中且只能出现一次。 2. 若顶点A在序列中,且在B之前,那么在图中不可能存在一条由B到A的路径。 .原创 2020-07-24 21:09:26 · 105 阅读 · 0 评论 -
二叉树的遍历
思路: 遍历二叉树使用递归的方式是比较简单、清晰的,但是这种方法会导致性能的下降,这是因为每次在调用函数时需要为当前函数保存现场,为新调用的函数申请空间,同时如果我们忘记设置递归结束条件还会引起内存栈的溢出。 这里讲述的方法是使用迭代的方法实现递归的工作流程。 首先递归的本质实际上是压栈,即在又一次调用自身之前,向栈中压入当前函数的状态。 我们可以建立辅助栈模拟压栈,对于二叉树的遍历顺序而言,我们要考虑结点入栈的顺序,因为栈先进后出的工作特点,所以向栈中压入结点的顺序直接影响到了我们的访问顺序。 而且注意原创 2020-07-12 10:03:24 · 72 阅读 · 0 评论