#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
typedef struct node{
int d;
struct node *lchild,*rchild;
}Tnode;
void insertTree(Tnode **r,int d){
if(*r==NULL){//如果树为空,则建树
*r=(Tnode *)malloc(sizeof(Tnode));
(*r)->d = d;
(*r)->lchild=NULL;
(*r)->rchild=NULL;
}else{
if(d<(*r)->d){//当前值小于根结点,建左子树
insertTree(&((*r)->lchild),d);
}else if(d>(*r)->d){//当前值大于根结点,建右子树
insertTree(&((*r)->rchild),d);
}
}
}
void MK(Tnode **r,int a[],int n){
int i;
for(i=0;i<n;i++){
insertTree(&(*r),a[i]);
}
}
void porder(Tnode *r){//先根遍历
if(r){
printf("%4d",r->d);
porder(r->lchild);
porder(r->rchild);
}
}
void morder(Tnode *r){//中根遍历
if(r){
morder(r->lchild);
printf("%4d",r->d);
morder(r->rchild);
}
}
void horder(Tnode *r){//后根遍历
if(r){
horder(r->lchild);
horder(r->rchild);
printf("%4d",r->d);
}
}
void main(){
Tnode *r=NULL;
int a[MAX],i;
printf("请输入数据,以-1结束: \n");
for(i=0;i<MAX;i++){
scanf("%d",&a[i]);
if(a[i]==-1){
break;
}
}
MK(&r,a,i);
porder(r); printf("\n");
morder(r); printf("\n");
horder(r); printf("\n");
}