PAT_甲级_1004 Counting Leaves

题目大意:

给定一颗树,要求求出每一层叶子结点的数目

算法思路:

直接遍历这颗树,在遇到叶子节点的时候,就统计当前层次下的叶子节点的个数,这里使用num_leaves_per_level保存每一层叶子节点的数目。遍历结束后,直接输出num_leaves_per_level数组即可。层序遍历代码如下:

int num_leaves_per_level[101];//每一层叶子节点的数目
int layer = -1;//层数

void levelTraverse(int root){
    queue q;
    node[root].level = 1;
    q.push(root);
    while (!q.empty()){
        int t = q.front();
        q.pop();
        if(layer

注意点:

  • 层序遍历的时候每次入队都是之前出队的节点的孩子节点不是$root$。否则会有测试点内存超限和超时。

提交结果:

PAT_甲级_1004 Counting Leaves_第1张图片

AC代码:

#include 
#include 
#include 

using namespace std;

struct Node{
    vector child;
    int level;
}node[101];

int num_leaves_per_level[101];//每一层叶子节点的数目
int layer = -1;//层数

void levelTraverse(int root){
    queue q;
    node[root].level = 1;
    q.push(root);
    while (!q.empty()){
        int t = q.front();
        q.pop();
        if(layer

你可能感兴趣的:(算法-数据结构,c++)