DFS一遍求子树的节点数
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5+50;
vector<int>g[maxn];
int n;
int dfs(int u,int f)
{
int sum = 1;
for(int i=0;i<g[u].size();i++)
{
int v = g[u][i];
if(v!=f)
{
sum += dfs(v,u);
}
}
printf("(节点%d的子树节点数:%d)\n",u,sum);
return sum;
}
int main()
{
cin>>n;
for(int i=1;i<=n-1;i++)
{
int u,v; cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,0);
}
/*
4
1 2
2 3
2 4
*/