算法学习笔记(10):各种序的美好性质
dfs序
定义
dfs序是指:每个节点在dfs深度优先遍历中的进出栈的时间序列。
序列
树上路径
任意子树都是连续的。例如假设有个子树
任意点对
1.若
2.若
考虑这些性质, 可以用dfs序做树上括号序莫队。
子树
性质: 以
应用: 可以利用dfs序和差分, 将路径加, 单点查问题转化成单点加, 子树和问题。
同时子树和可以转化成序列区间问题, 这样就可以上数据结构了。
链
最经典的应用就是树链剖分, 优先访问重链, 使重链在dfs序中为连续的一段, 从而通过数据结构可以维护整棵树的信息。
树
dfs序对于树本身也有很多美好性质。
极小生成子树(自己命名的)
给定一些关键点, 我们怎么得到最小的包括所有关键点的子树的信息呢。
将每个关键点按
这颗子树的边权和
这里的
虚树: 实际上就是建出极小生成子树, 将相邻两点的
欧拉序
定义:进入节点时记录,每次遍历完一个子节点时,返回到此节点记录,得到的 2 ∗ N − 1 长的序列;
性质:节点 x 第一次出现与最后一次出现的位置之间的节点均为 x 的子节点;
任意两个节点的 LCA 是欧拉序中两节点第一次出现位置中深度最小的节点。两个节点第一次出现的位置之间一定有它们的LCA,并且,这个LCA一定是这个区间中深度最小的点。
所以欧拉序可以做到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App