#include <iostream>
#include <vector>
using namespace std;
#define MAXN 102
#define SONMAXN 10
struct Node{
int father;
int layer;
vector<int> son;
}node[MAXN];
void DFS(int p,int layer){
if(node[p].son.size()==0){
node[p].layer=layer;
return;
}else{
for(int i=0;i<node[p].son.size();i++){
DFS(node[p].son[i],layer+1);
}
}
}
int main()
{
int nodenum,noleaf;
cin>>nodenum>>noleaf;
while(noleaf--){
int id,num;
cin>>id>>num;
while(num--){
int x;
cin>>x;
node[id].son.push_back(x);
}
}
node[1].father=0;
node[1].layer=1;
DFS(1,1);
int res[MAXN]={0};
int maxn=0;
for(int i=1;i<MAXN;i++){
if(node[i].son.size()!=0){
continue;
}
if(node[i].layer>maxn){
maxn=node[i].layer;
}
res[node[i].layer]++;
}
for(int i=1;i<=maxn;i++){
if(i!=1){
cout<<" ";
}
cout<<res[i];
}
return 0;
}
easy
本文介绍了一个使用深度优先搜索(DFS)算法来遍历树形结构的C++程序实例。该程序首先读取节点数和叶子节点信息,然后通过用户输入构建树的结构,并最终统计并输出每层的叶子节点数量。此代码适用于理解如何利用DFS进行树的遍历及层级分析。
1431

被折叠的 条评论
为什么被折叠?



