#H1040. 先序遍历
先序遍历
题目描述
按照 “根 - 左 - 右” 的顺序遍历 二叉树 :
- 先序遍历 = 根 + 左子树先序遍历 + 右子树先序遍历
- 空树的先序遍历 = 空
例如,如下这棵树先序遍历的结果为 。
给一棵 个点的二叉树(根节点为 ),你可以进行如下操作 至多 次:
- 选择 个 (除了根以外的)点 ,断开 和其父节点之间的边;
- 然后重新选择另一个点作为 的父节点、将 接上去,需要保证操作之后仍然是一棵以 为根的二叉树。
你想要操作之后的二叉树有字典序最小的先序遍历序列,输出这个序列。
输入描述
第一行 个整数 ,代表有 组数据。 每组数据共 行。第一行 个整数 ,表示节点的个数。接下来 行,第 行 个整数 代表 号结点的左右儿子编号,没有左右儿子的话用 表示
输出描述
输出 行,对于每组数据,输出一行 个整数,代表字典序最小的二叉树先序遍历
输入样例1
12
4
2 3
0 4
0 0
0 0
5
2 3
0 4
0 5
0 0
0 0
6
5 2
3 6
4 0
0 0
0 0
0 0
6
2 3
6 4
0 5
0 0
0 0
0 0
6
5 2
3 0
4 0
6 0
0 0
0 0
6
3 2
4 6
0 0
5 0
0 0
0 0
6
4 2
5 3
0 0
0 0
0 6
0 0
6
3 2
0 0
5 4
0 6
0 0
0 0
6
2 3
0 0
5 4
0 6
0 0
0 0
6
3 2
4 5
0 0
0 6
0 0
0 0
6
2 3
0 4
0 0
0 5
0 6
0 0
6
2 5
3 4
0 0
0 0
6 0
0 0
输出样例1
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 4 3 5 6
1 2 3 4 6 5
1 2 4 5 3 6
1 2 5 4 6 3
1 2 3 5 4 6
1 2 3 4 5 6
1 2 4 3 6 5
1 2 3 4 5 6
1 2 3 4 5 6
样例解释
对于第一个样例,可以把 号结点连在 号结点的左儿子处。
对于第二个样例,可以把 号结点连在 号结点的左儿子处 。
数据范围
测试点编号 | 特殊性质 | |
---|---|---|
无 | ||
所有的 | ||
所有的 | ||
无 |
对于所有测试点:令 代表数据中 的总和, , ,保证输入数据是一棵以 为根的二叉树。