题目描述
给定一颗有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。
9
2 4
0 3
6 8
0 5
0 0
7 0
0 0
0 9
0 0