还是数层数和数节点的问题,个人觉得用BFS比较好;
当然用DFS也能做,具体的思路就是建立层数数组,深度遍历到x层的时候,如果是叶子节点就leaf[x]++,如果不是就不管,继续跳过;代码片段可以这样:void DFS(int index,int h){ max_h=max(h,max_h); if(G[index].size()==0){ leaf[h]++; return; } for(int i=0;i
BFS代码如下所示:
#include#include #include #include #include using namespace std;using std::vector;using std::queue;const int maxn=110;int n,m;int leaf[maxn]={0};//每层leaf个数vector table[maxn];int BFS(int x){ int layer=0; queue q; q.push(x); while(!q.empty()){ int num=0; int length=q.size(); layer++; for(int i=0;i