给定一棵大小为n的树(其中二叉树的根始终为0号节点) 输入: 输入第一行一个整数n代表树的大小 接下来n行每行三个整数,分别代表节点的下标,以及该节点左儿子的下标和右儿子的下标。其中-1代表节点为NULL
#include<stdio.h>
#include<stdlib.h>
int n;
struct node {
struct node *lchild ;
struct node rchild ;
int id ;
} ;
typedef struct node * BTREE ;
void create (BTREE &bt)
{
int x,y,z;
scanf(" %d%d%d",&x,&y,&z);
if(x==-1||x>=n)
bt=NULL;
else
{
bt=(node)malloc(sizeof(node));
bt->id=x;
bt->lchild->id=y;
bt->rchild->id=z;
create(bt->lchild);
create(bt->rchild);
}
}
void preorder(BTREE bt)
{
if(bt==NULL)
return;
else
{
printf("%d",bt->id);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void inorder(BTREE bt)
{
if(bt==NULL)
return;
else
{
inorder(bt->lchild);
printf("%d",bt->id);
inorder(bt->rchild);
}
}
void postorder(BTREE bt)
{
if(bt==NULL)
return;
else
{
postorder(bt->lchild);
postorder(bt->rchild);
printf("%d",bt->id);
}
}
int main()
{
BTREE bt;
scanf("%d",&n);
create(bt);
preorder(bt);
inorder(bt);
postorder(bt);
return 0;
}
这样子为什么不行呢