START:

题目

题意是输出二叉树的每一层叶节点的个数。

解法

dfs。

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
只放关键代码
*/

void dfs(int index, int depth)
{
/*
当发现叶子节点时,层叶子节点数加一
并与最大层数比较,让最大层数变化
*/
if (v[index].size() == 0)
{
book[depth]++;
maxdepth = max(maxdepth, depth);
return;
}

/*
从根节点开始遍历
*/
for (int i = 0; i < v[index].size(); i++)
{
dfs(v[index][i], depth + 1);
}
}

int main()
{
...
//end for i j
dfs(1, 0);
}

吐槽

我为什么 bfs 的时候要开一个二维 vector ,直接 push_back() 进去数据就好了。

参考

柳婼 の blog 柳大的博客。

END

相关文章
评论
分享
Please check the post_relate setting in config.yml of hexo-theme-Annie! You should make sure 'postsEnable == true' and the number of site posts greater than 1.
Please check the comment setting in config.yml of hexo-theme-Annie!