22. 二叉树的遍历

内存限制:128 MB 时间限制:1.000 S

题目描述

给出一个n个节点的二叉树,请求出二叉树的前序遍历,中序遍历和后序遍历。

输入

题目包含多行输入,第一行为一个整数 N,表示二叉树的节点总数,后面将有 N 行对应于二叉树的 N 个节点的信息。


每行的数据格式遵循如下规则:

每行开始是该节点的标识符,代表二叉树中具体的一个节点。

节点标识符之后是两个数字,分别表示该节点的左孩子和右孩子的序号。序号根据输入顺序从 1 开始自动分配,即第一个输入的节点序号为 1,第二个为 2,以此类推。

若某个节点的左孩子或右孩子序号为 0,则表示该节点不存在相应的左孩子或右孩子。

输出

共三行,第一行为二叉树的前序遍历,第二行为中序遍历,第三行为后序遍历

样例输入 复制

7
F 2 3
C 4 5
E 0 6
A 0 0
D 7 0
G 0 0
B 0 0

样例输出 复制

FCADBEG
ACBDFEG
ABDCGEF

提示

样例输入解释如下: 首行数字 7 表示二叉树共有 7 个节点。接下来的行按序提供每个节点的信息,

格式为:标识符 左孩子序号 右孩子序号。节点序号自动从 1 依次递增,对应输入的行顺序。


例如:

F 2 3 表示标识符为 F 的节点(序号为 1)有左孩子(序号为 2)和右孩子(序号为 3);

E 0 6 表示标识符为 E 的节点(序号为 3)无左孩子,有右孩子(序号为 6)。


由于 F 的右孩子是序号为 3 的节点,而 E 的序号刚好为 3,所以 F 的右孩子就是 E。