It is some complex.Almost I had forget it.
#include <stdio.h>
typedef struct TNode
{
TNode *left;
TNode *right;
int data;
}TNode,*Tree;
void PreOrder(Tree T)
{
if (T)
{
printf("%d ",T->data);
if (T->left)
PreOrder(T->left);
if (T->right)
PreOrder(T->right);
}
}
void InOrder(Tree T)
{
if (T)
{
if (T->left)
InOrder(T->left);
printf("%d ",T->data);
if (T->right)
InOrder(T->right);
}
}
void PostOrder(Tree T)
{
if (T)
{
if (T->left)
PostOrder(T->left);
if (T->right)
PostOrder(T->right);
printf("%d ",T->data);
}
}
int main()
{
int n,e,flag;
Tree T;
TNode *p,*pre;
while(scanf("%d",&n)!=EOF)
{
T=NULL;
flag=-1;
while (n--){
scanf("%d",&e);
if (!T)
{
T=new TNode;
T->data=e;
T->left=NULL;
T->right=NULL;
}
else
{
p=T;
pre=p;
while (p)
{
if (e<p->data)
{
pre=p;
p=p->left;
flag=1;
}
else if (e>p->data)
{
pre=p;
p=p->right;
flag=0;
}
else if (e==p->data)
{
flag=-1;
break;
}
}
if (flag!=-1){
p=new TNode;
p->data=e;
p->left=NULL;
p->right=NULL;
}
if (flag==1)
pre->left=p;
if (flag==0)
pre->right=p;
}
}
PreOrder(T);
printf("\n");
InOrder(T);
printf("\n");
PostOrder(T);
printf("\n");
delete(T);
}
return 1;
}