【板子】欧拉序

树转区间:DFS 欧拉序(in /out 时间戳)

树的子树对应一段连续区间,是线段树能处理的核心前提:

  1. 定义 in[u]:第一次访问节点 u 的时间戳;
  2. 定义 out[u]:遍历完 u 整棵子树离开时的时间戳;
  3. 所有属于 u 子树的节点,它们的 in 编号一定落在区间 \(in\[u, outu]\)。

举个例子:

复制代码
1
├─2
└─3

dfs 序:1 → 2 → 回溯 → 3 → 回溯 \(in1=1,\ out1=3\) \(in2=2,\ out2=2\) \(in3=3,\ out3=3\) 子树 1 对应区间 \(1,3\),子树 2 对应 \(2,2\)。

DFS 预处理代码片段

复制代码
int tim=0;
double w[300005]; // w[u] = ln(节点u当前权值)
int in[300005],out[300005];
vector<int>g[300005];

void dfs(int u,int fa){
    in[u]=++tim;
    for(int v:g[u]){
        if(v!=fa) dfs(v,u);
    }
    out[u]=tim;
}
相关推荐
wdfk_prog21 分钟前
嵌入式面试真题学习笔记系列
笔记·学习·面试
懿路向前25 分钟前
【HarmonyOS学习笔记】2026-07-30 | 小艺开放平台智能体接入实战
笔记·学习·harmonyos
charlie11451419139 分钟前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-27 冒泡法排序(C语言实现)
c语言·开发语言·数据结构·算法
wdfk_prog1 小时前
canopen学习笔记系列
笔记·学习
大鱼>3 小时前
因子挖掘+回测+RL交易:量化金融完整系统
人工智能·深度学习·算法·金融
2301_777998343 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
啦啦啦啦啦zzzz3 小时前
设计模式:单例模式和工厂模式
c++·单例模式·设计模式·工厂模式
Henry Zhu1233 小时前
C++ 动态多态详解
c++
此生决int4 小时前
深入理解C++系列(06)——模版初阶与STL
开发语言·c++