描述
输入
先输入一个小于等于100的正整数n,接下来的n行每行3个非负整数,是每个结点的信息。第一个是该结点的关键字数值,第二个是左孩子的编号,第三个是右孩子的编号,(孩子的编号为0表示这个子树为空),0号结点为根节点。
输出
输出该二叉树的先序序列
输入样例
5
3 1 2
8 0 3
2 4 0
7 0 0
10 0 0
输出样例
3
8
7
2
10
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node*lchild;
struct node*rchild;
}BiTNode,*BiTree;
void xianxu(BiTree root)
{
if(root!=NULL)
{
printf("%d\n",root->data);
xianxu(root->lchild);
xianxu(root->rchild);
}
}
void creat(BiTree *root)
{
BiTree Q[105];
BiTree s;
int i,n;
int a[105][105];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
}
for(i=0;i<n;i++)
{
s=(BiTree)malloc(sizeof(BiTNode));
s->data=a[i][0];
s->rchild=NULL;
s->lchild=NULL;
Q[i]=s;
}
*root=Q[0];
for(i=0;i<n;i++)
{ Q[i]->data=a[i][0];
if(a[i][1]!=0)
{Q[i]->lchild=Q[a[i][1]];}
else {Q[i]->rchild=NULL;}
if(a[i][2]!=0)
{Q[i]->rchild=Q[a[i][2]];}
else {Q[i]->rchild=NULL;}
}
}
int main()
{
BiTree root;
creat(&root);
xianxu(root);
return 0;
}