dfs序 欧拉序
dfs 序
就是按照 dfs 的顺序遍历整棵树的时候再加一个数组记录经过的编号就行了。
#include <bits/stdc++.h>
#define V e[i].v
using namespace std;int rd(){
int w=0,v=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')v=-1;c=getchar();}
while(c>='0'&&c<='9'){w=(w<<1)+(w<<3)+(c&15);c=getchar();}return w*v;
}void wr(int x){
char c[20];int l=0;if(x<0){putchar((1<<5)+(1<<3)+(1<<2)+1);x=~x+1;}
do{c[l++]=x%10+(1<<4)+(1<<5);x/=10;}while(x>0);for(int i=l-1;i>=0;i--)putchar(c[i]);putchar('\n');
}const int N=2e6;int n,m,fir[N],c,cnt;struct E{int v,nt;}e[N<<1];
void I(int u,int v){e[++c].v=v;e[c].nt=fir[u];fir[u]=c;}
int d_[N],tot;//dfs 序
void dfs(int u,int f){d_[u]=++tot;for(int i=fir[u];i;i=e[i].nt)if(V!=f)dfs(V,u);}
int main(){n=rd();for(int i=1,u,v;i<n;i++)u=rd(),v=rd(),I(u,v),I(v,u);dfs(1,0);return 0;}
欧拉序
就是按照 dfs 的顺序遍历整棵树的时候绕回原点时所有点的顺序。
写法就是在 dfs 遍历到某个点时加进欧拉序中,遍历完当前的子树之后再次加进欧拉序中。
#include <bits/stdc++.h>
#define V e[i].v
using namespace std;int rd(){
int w=0,v=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')v=-1;c=getchar();}
while(c>='0'&&c<='9'){w=(w<<1)+(w<<3)+(c&15);c=getchar();}return w*v;
}void wr(int x){
char c[20];int l=0;if(x<0){putchar((1<<5)+(1<<3)+(1<<2)+1);x=~x+1;}
do{c[l++]=x%10+(1<<4)+(1<<5);x/=10;}while(x>0);for(int i=l-1;i>=0;i--)putchar(c[i]);putchar('\n');
}const int N=2e6;int n,m,fir[N],c,cnt;struct E{int v,nt;}e[N<<1];
void I(int u,int v){e[++c].v=v;e[c].nt=fir[u];fir[u]=c;}
int dfn[N];//欧拉序
void dfs(int u,int f){dfn[++cnt]=u;for(int i=fir[u];i;i=e[i].nt)if(V!=fa)dfs(V,u),dfn[++cnt]=u;}
int main(){n=rd();for(int i=1,u,v;i<n;i++)u=rd(),v=rd(),I(u,v),I(v,u);dfs(1,0);return 0;}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)