
并查集
并查集是一种用于处理元素分组的集合数据结构,支持两个核心操作:合并两个集合、查询两个元素是否属于同一集合,借助路径压缩与按秩合并优化,能近乎常数时间完成操作,常用于连通性判断、图论连通分量等场景。
属于该分类的文章:
17篇文章

并查集是一种用于处理元素分组的集合数据结构,支持两个核心操作:合并两个集合、查询两个元素是否属于同一集合,借助路径压缩与按秩合并优化,能近乎常数时间完成操作,常用于连通性判断、图论连通分量等场景。

二叉搜索树是一种二叉树,对任意结点,其左子树所有结点值小于该结点值,右子树所有结点值大于该结点值,利用该性质可高效完成查找、插入与删除操作。

堆是一种完全二叉树形式的特殊数据结构,分为大顶堆、小顶堆;父节点值分别大于 / 小于等于子节点,适合快速获取最值,底层常用数组存储,核心操作是上浮、下沉,常用来实现优先队列、堆排序。

哈夫曼树是带权路径长度最小的二叉树,通过不断选取权值最小的两个节点合并生成父节点构建而成,没有度为 1 的结点,常用来构造最优前缀编码,实现数据的高效压缩。

二叉树遍历是按特定规则访问树中每一个节点且仅访问一次的操作,常见有前序、中序、后序、层序四种方式,前三种以根节点访问顺序区分,层序按从上到下逐层访问,遍历是二叉树查找、修改、输出等运算的基础。

树是一种非线性的数据结构,由节点和边组成,存在唯一根节点,每个节点可以拥有多个子节点,无环路;适合表达层级、从属关系,常用于文件目录、二叉搜索、排序索引等场景。

图的广度优先搜索(BFS)从起始顶点出发,优先访问当前节点的所有相邻顶点,再逐层向外扩展遍历,依靠队列实现,适合求最短路径、寻找连通分量,按层遍历各个结点。

图的深度优先搜索(DFS)从起始顶点出发,沿着一条路径尽可能向下访问,走到尽头再回溯,遍历未访问过的邻接顶点,借助栈或递归实现,可遍历图中连通分量,能用于找路径、判断连通性。

图的实现是通过邻接矩阵或邻接表等方式存储顶点与边的信息,以此来表示图中各个节点之间的连接关系,支撑图的遍历、查找等各类算法操作。

图是由顶点和连接顶点的边构成的非线性数据结构,用来描述元素之间多对多的关联关系,可用来存储各类网状关联场景的数据。

队列是先进先出的数据结构,只能在队尾插入元素、队头删除元素,先进入的数据会优先被取出。

单调栈是栈内元素保持单调递增或单调递减的特殊栈,在入栈时会弹出破坏单调性的元素,常用来快速求解区间最值类问题。

栈是一种后进先出的数据结构,只能在一端进行插入和删除操作,后放入的数据会被优先取出。

多项式滚动哈希是一种将字符串映射为高进制整数的高效算法;它利用数学递推特性,能在 $O(1)$ 时间内“滚动”计算出任意子串的哈希值,广泛用于字符串匹配和查重。

哈希表是一种通过哈希函数把键映射到数组下标,从而实现平均 O (1) 时间复杂度查找、插入和删除的数据结构。

链表是一种线性数据结构,它的每个节点存储数据与指向下一节点的指针,节点在内存中不必连续存放;不支持随机访问,查找需要从头依次遍历,但插入、删除元素时只需修改指针,不用移动大量数据,适合频繁增删的场景。

数组是程序设计中最基础的数据结构,它把相同类型的数据按连续的内存位置有序存放,通过下标就能快速访问对应元素,便于批量存储与处理一组数据,但数组长度大多固定,插入删除操作效率相对较低。