<span style="font-size:18px;">二<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">叉树的建立与遍历(binary-tree) </span></span>
题目描述
给出一棵二叉树,分别输出先序、中序、后序遍历结果。
输入
第1行:结点数n(1<=n<=100)
以下若干行,每行3个整数,分别表示父结点、左孩子、右孩子。若没有孩子,对应的整数为0.
输出
第1行:树根
第2行:先序遍历结果,数字间用1个空格分开。
第3行:中序遍历结果,数字间用1个空格分开。
第4行:后序遍历结果,数字间用1个空格分开。
样例输入
8
1 2 4
2 0 0
4 8 0
3 1 5
5 6 0
6 0 7
8 0 0
7 0 0
样例输出
3
3 1 2 4 8 5 6 7
2 1 8 4 3 6 7 5
2 8 4 1 7 6 5 3
--------------------------------------------------------------------------------------
这道题可以通过hash表找根,开始进行遍历
为了方便遍历,我们可以把它的所有信息存在tree[father]处。
然后便是各种遍历,输出节点了。
---------------------------------------------------------------------------
【附】树的三种遍历:
1、先序遍历
1)打印根节点
2)先序遍历左子树
3)先序遍历右子树
2、中序遍历
1)中序遍历左子树
2)打印根节点
3)中序遍历右子树
3、后序遍历
1)后序遍历左子树
2)后序遍历右子树
3)打印根节点
由于树的先序、中序、后序遍历的步骤是递归描述的,所以,遍历的程序普遍用递归来写。