OJ现已增加邮箱找回密码功能,还没有绑定邮箱的同学们请抓紧时间,以免密码丢失无法找回


问题1215--存储树

1215: 存储树

时间限制: 1 Sec  内存限制: 128 MB
提交: 67  解决: 12
[提交] [状态] [讨论版] [命题人:]

题目描述

给定一颗有n个结点的二叉树,然后给出n条关系,第i条包含两个数字x,y分别代表i号结点的左右儿子的编号(如果为0代表不存在)。
请输出这个树的前序遍历,我们假定始终以1为根。

给出树的存储结构:
typedef struct Tree{
int data;//节点编号
struct Tree* lson;//左儿子,不存在是NULL
struct Tree* rson;//右儿子,不存在是NULL
}Tree;

要求实现三个函数:
Tree* Creat(int v);//创建一个结点,结点编号是v,返回结点指针
void dfs(Tree *x);//传入根节点,进行先序遍历
void linkLson(Tree *x, Tree* ls, Tree *rs);//连接左右儿子,ls为左儿子,rs为右儿子,在实现Creat后你可以认为所有结点均已创建。


输入

一个数字n(1<=n<=1e5)。
接下来n行,每行包含两个数字x,y代表第i个结点的左右儿子(0<=x,y<=n)
保证数据合法,即不存在a的儿子有b,b的儿子有a。

输出

输出前序遍历

样例输入 Copy

9
2 4
0 3
6 8
0 5
0 0
7 0
0 0
0 9
0 0

样例输出 Copy

1 2 3 6 7 8 9 4 5

来源/分类