统计树的每一层上叶子节点的个数
Sample Input
2 1
01 1 02
Sample Output
0 1
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <vector>
using namespace std;
void fun(vector<string> &v, map<string,vector<string>> &MapTree)
{
vector<string> next;
int leaf = 0;
vector<string>::iterator iter = v.begin();
while(iter != v.end())
{
map<string,vector<string>>::iterator iterMap = MapTree.find(*iter);
if (iterMap != MapTree.end())
{
vector<string> vec = iterMap->second;
if (vec.size() == 0)
{
leaf++;
}
else
{
next.insert(next.end(),vec.begin(),vec.end());
}
}
else
{
leaf++;
}
iter++;
}
cout<<" "<<leaf;
if (next.size() == 0)
{
return;
}
fun(next,MapTree);
}
int main()
{
map<string,vector<string>> MapTree;
int N,M;
cin>>N>>M;
while(M--)
{
string str;
int K;
vector<string> VNode;
cin>>str>>K;
while(K--)
{
string strNode;
cin>>strNode;
VNode.push_back(strNode);
}
MapTree[str] = VNode;
}
map<string,vector<string>>::iterator iter = MapTree.find("01");
if (iter != MapTree.end())
{
vector<string> v = iter->second;
if (v.size() > 0)
{
cout<<"0";
fun(v, MapTree);
}
else
{
cout<<"1";
}
}
else
{
cout<<"1";
}
return 0;
}
本文介绍了一个用于统计树形结构中每层叶子节点数量的C++程序。该程序通过递归方式遍历树结构,并记录每一层的叶子节点数目。适用于需要理解和实现树结构遍历算法的开发者。
408

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



