python列出叶结点 对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。 输入格式: 首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 "-"。编号间以 1 个空格分隔。 输出格式: 在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。 输入样例: 8 1 - - - 0 - 2 7 - - - - 5 - 4 6 输出样例: 4 1 5
时间: 2024-02-12 16:06:14 浏览: 102
好的,这个问题其实可以用 Python 的列表和字典来实现。具体的思路如下:
1. 首先读入树的结点总数 N 和每个结点的左右孩子编号。
2. 构建一个字典 tree,用来记录每个结点的左右孩子编号。如果某个孩子不存在,则用字符串 "-" 来表示。
3. 遍历字典 tree 中的每个结点,判断其是否为叶子节点。如果是叶子节点,则将它的编号存入一个列表 leaves 中。
4. 最后按照题目要求输出列表 leaves 中的叶子节点编号。
以下是完整的 Python 代码实现:
```python
# 读入树的结点总数和每个结点的左右孩子编号
N = int(input())
tree = {}
for i in range(N):
left, right = input().split()
tree[i] = (left, right)
# 遍历树中的每个结点,判断是否为叶子节点
leaves = []
for i in range(N):
left, right = tree[i]
if left == '-' and right == '-':
leaves.append(i)
# 输出叶子节点的编号
print(' '.join(str(x) for x in leaves))
```
输入样例:
```
8
1 - - - 0 - 2 7 - - - - 5 - 4 6
```
输出样例:
```
4 1 5
```
阅读全文