当前位置: 首页 > news >正文

DFS 序

思想

  • 对于树结构,通常包括进入节点和离开节点的两次记录(即时间戳),形成一个长度为2N的序列(N为节点数)。

性质

  • 子树连续性‌:同一子树的节点在DFS序中形成连续区间。例如,根节点的子树区间包含所有子节点的访问记录。 ‌
    这个性质使得在子树上进行的修改、查询可以转换成区间修改、区间查询。dfs序的主要作用就是将一个子树变成序列上的一个连续区间。设in[x]为进入当前节点时的时间,out[x]为离开当前节点时的时间,那么子树x在dfs序里所对应的范围就是in[x]~out[x]。

  • 括号化定理‌:若节点A的进入时间小于节点B的进入时间,且A的离开时间大于B的离开时间,则B是A的子节点。

  • 线性化处理‌:DFS序将树结构转化为线性序列,便于使用线段树、树状数组等算法解决树上问题。

做法

  • 子树操作:子树问题直接对应DFS序列上的一个连续区间。

  • 路径操作:路径问题通常需要结合LCA,将路径拆解为u->lca和lca->v两部分处理。

工具

  • LCA(最近公共祖先):用于处理路径问题,常用倍增法或树链剖分求解。
  • 树状数组/线段树:用于高效处理DFS序列上的区间修改与查询。
  • 树上差分:巧妙地将路径修改转化为少量点的修改。
  • 主席树(可持久化线段树):用于处理树上路径的区间查询,例如查询路径上第k大的数。

拓展应用

  • 虚树
http://www.jsqmd.com/news/33577/

相关文章:

  • 重组蛋白纯化标签科普:从His到SUMO、Avi的全面解析
  • 2025.11.6
  • 飞牛nas播放卡顿的解决方案
  • 第三十五篇
  • 使用LLaMA Factory微调模型笔记
  • 25.11.6联考题解
  • Linux驱动学习(一)---Ubuntu-helloworld驱动编译
  • 2025/11/3 ~ 2025/11/9 做题笔记 - sb
  • 利用Google Dork挖掘敏感文件setup.sh的技术解析
  • 11.6 程序员的修炼之道:从小工到专家 第四章 注重实效的偏执 - GENGAR
  • 2025.11.6~?
  • 详细介绍:自建数字资源库:技术架构全解析
  • 人工智能价值权衡的元理论:三值纠缠与文明演进的动力学框架
  • golang面经——内存相关模块 - 详解
  • 11/7
  • QOJ4795 Taxi
  • 蓝牙耳机怎么连接电脑?【图文详解】蓝牙耳机连接电脑?蓝牙耳机能连接电脑吗?USB蓝牙适配器? - 详解
  • AI浪潮下的就业迷思:技术迭代还是泡沫破灭?
  • 洛谷 P4159
  • 25.11.6 DAG和拓扑排序
  • 2025-11-06 PQ v.Next日志记录
  • 数据库介绍,安装,配置
  • Spring BeanFactory 接口
  • 领码方案|微服务与SOA的世纪对话(3):方法论新生——DDD、服务网格与AI Ops的融合之道 - 实践
  • 遗留系统微服务改造(四):从单体到微服务的演进之路 - 详解
  • 备考笔记8
  • 不用Docker也能跑RustFS?Windows一键安装实测来了!
  • Spacy 词性 实体 依存关系等对应缩写
  • 洛谷 P2824
  • JavaSE——基础