D
AI
学习工作台
数据结构2026-03-171 分钟阅读

高级数据结构

Trie、线段树与并查集

Trie线段树并查集高级数据结构记笔记标记疑惑

Trie(字典树)

Trie 是多叉树,每条边代表一个字符,从根到某节点的路径表示一个字符串前缀。常用于前缀匹配、自动补全、拼写检查。

插入:沿路径逐字符建节点,末尾标记为单词结束。查找:沿路径走,若存在且标记则找到。空间 O(总字符数),单次操作 O(字符串长度)。

压缩 Trie(Patricia Trie)合并单子节点路径,节省空间。双数组 Trie 用两个数组表示转移,适合静态词典、AC 自动机等。

线段树

线段树将区间 [1,n] 递归二分,每个节点代表一个子区间的聚合信息(和、最值等)。叶子对应单点,父节点由子节点合并得到。

单点修改:更新叶子并向上传递。区间查询:若当前节点区间完全包含于查询区间则直接返回,否则递归左右。区间修改用懒标记延迟下传,保证 O(log n)。

应用:区间和、区间最值、区间覆盖、扫描线等。二维可扩展为二维线段树或树套树。

并查集

并查集维护元素的分组,支持合并集合和查询两元素是否同组。用森林表示,每棵树一个集合,根为代表元。

查找:递归找根,路径压缩将路径上节点直接连到根。合并:将一棵树的根接到另一棵的根下,按秩合并时小树接大树。

近似 O(α(n)) 单次操作,α 为反阿克曼函数,实际可视为常数。用于连通分量、最小生成树(Kruskal)、动态连通性等。

知识卡片

问题

Trie 树适合解决什么问题?

点击翻转查看答案

答案

前缀匹配、自动补全、词频统计、最长公共前缀等。利用字符串的公共前缀节省空间,查找与插入均为 O(m),m 为字符串长度。

问题

线段树支持哪些操作?复杂度如何?

点击翻转查看答案

答案

单点/区间修改、区间查询(和、最值等)。建树 O(n),单点修改 O(log n),区间查询 O(log n),区间修改配合懒标记也是 O(log n)。

问题

并查集的路径压缩和按秩合并分别解决什么?

点击翻转查看答案

答案

路径压缩:查找时把节点直接连到根,摊平树高;按秩合并:小树合并到大树,控制高度。两者结合可达近似 O(1) 的单次操作。