#include <stdio.h>
#include <malloc.h>
typedef struct node{
int data;
struct node *lchild,*rchild;
}*treetp,tree;
treetp create (treetp t,int c);
void print1(treetp);
void print2(treetp);
void print3(treetp);
int number=0;
int main(void)
{
treetp t=NULL, r=NULL;
r=create (t,0);
printf("/nqianxubianli: ");
print1 (r);
printf("/nzhongxubianli: ");
print2 (r);
printf("/nhouxubianli: ");
print3 (r);
printf("/n");
return 0;
}
treetp create(treetp t,int c)
{
treetp p,di;
do{
scanf("%d",&c);
if (t==NULL)
{
t=(treetp)malloc(sizeof(tree));
t->lchild=t->rchild=0;
t->data=c;
}
else
{
p=t;
while(p!=NULL)
{
di=p;
if(c < (p->data))
p=p->lchild;
else
p=p->rchild;
}
if(c<(di->data))
{
treetp NEWdi=(treetp) malloc(sizeof(tree));
NEWdi->lchild=NEWdi->rchild=0;
NEWdi->data=c;
di->lchild=NEWdi;
}
else
{
treetp NEWdi=(treetp) malloc(sizeof(tree));
NEWdi->lchild=NEWdi->rchild=0;
NEWdi->data=c;
di->rchild=NEWdi;
}
}
++number;
}while(c!=0);
printf("yezi de shuliang:%d/n",number);
return t;
}
void print1(treetp t)
{
if (t!=NULL)
{
printf("%d ",t->data);
print1(t->lchild);
print1(t->rchild);
}
}
void print2(treetp t)
{
if (t!=NULL)
{
print2(t->lchild);
printf("%d ",t->data);
print2(t->rchild);
}
}
void print3(treetp t)
{
if (t!=NULL)
{
print3(t->lchild);
print3(t->rchild);
printf("%d ",t->data);
}
}