题目来源:
中国大学MOOC-陈越、何钦铭-数据结构
题目详情:
译文:
给定一棵树,按照从上到下,从左到右的顺序列出所有叶结点。
输入格式:
每个输入文件包含一个测试用例。 对于每种情况,第一行给出一个正整数 N ( ≤ 10 ) N(≤10) N(≤10),它是树中节点的总数。节点从 0 0 0到 N − 1 N-1 N−1编号。 然后跟随 N N N行,每行对应一个节点,并给出该节点左右子节点的索引。 如果孩子不存在,将在该位置放置一个“-
”。 任何一对孩子都用空格隔开。
输出格式:
对于每个测试用例,按从上到下,从左到右的顺序在一行中打印所有叶结点的索引。 相邻数字之间必须恰好有一个空格,行尾不得有多余的空格。
输入样例:
8
1 -
- -
0 -
2 7
- -
- -
5 -
4 6
输出样例:
4 1 5
解题思路:静态链表建树+层序遍历输出
关于本题,整体来看大致分以下两个步骤:
- 表示二叉树
- 创建二叉树
- 遍历二叉树输出叶结点
接下来便一步步的分析。
-
表示二叉树
由于本题的输入与上一篇博文中介绍题目的输入有异曲同工之处,因此表示二叉树和创建二叉树的方法可以借鉴上一题,即用静态链表表示。
二叉树的常用表示方法是用动态链表来表示,如下图:
val