判断一个树 每一层 叶子节点的个数
树上的DFS 或者 BFS,这里采用DFS,每深入一层,总深度加1
如果下一层有孩子,继续向下,如果没有就ans[层数]++;
其中用到了vector,不懂得建议看一看STL
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
vector<int> V[105];
int n,m,t=1,Max=0;
int ans[105];
void DFS(int cnt,int node){
if(V[node].size()==0){
ans[cnt]++;
Max=max(Max,cnt);
return ;
}
else{
for(int i=0;i<V[node].size();i++){
DFS(cnt+1,V[node][i]);
}
}
}
int main(){
memset(ans,0,sizeof(ans));
cin>>n>>m;
for(int i=0;i<m;i++){
int node,k,x;
cin>>node>>k;
for(int j=0;j<k;j++){
cin>>x;
V[node].push_back(x);
}
}
int cnt=0;
DFS(cnt,1);
for(int i=0;i<Max;i++)
cout<<ans[i]<<" ";
cout<<ans[Max]<<endl;
return 0;
}