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)
",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
*/

原文地址:https://www.cnblogs.com/xiaoxiao179/p/13221417.html