#include<stdio.h>
#include<stdlib.h>
typedef int Treedata;
typedef struct Node
{
Treedata data;
struct Node *leftchild,*rightchild;
}treenode;
typedef treenode *tree;
treenode* creatTree(treenode *T,int x)
{
if(T==NULL)
{
T=(treenode *)malloc(sizeof(treenode));
T->data=x;
T->leftchild=NULL;
T->rightchild=NULL;
}
else if(T->data>x)
{
T->leftchild=creatTree(T->leftchild,x);
}
else if(T->data<x)
{
T->rightchild=creatTree(T->rightchild,x);
}
else ;
return T;
}
void preorder(treenode *T)
{
if(T!=NULL)
{
printf("%d ",T->data);
preorder(T->leftchild);
preorder(T->rightchild);
}
}
void inorder(treenode *T)
{
if(T!=NULL)
{
inorder(T->leftchild);
printf("%d ",T->data);
inorder(T->rightchild);
}
}
void postorder(treenode *T)
{
if(T!=NULL)
{
postorder(T->leftchild);
postorder(T->rightchild);
printf("%d ",T->data);
}
}
void cleantree(treenode *T)
{
if(T)
{
cleantree(T->leftchild);
cleantree(T->rightchild);
free(T);
}
}
void main()
{
int i,n,x;
treenode *T;
while(scanf("%d",&n)!=EOF)
{
for(i=0,T=NULL;i<n;i++)
{
scanf("%d",&x);
T=creatTree(T,x);
}
preorder(T);
printf("\n");
inorder(T);
printf("\n");
postorder(T);
printf("\n");
cleantree(T);
}
}
/**************************************************************
Problem: 2195
User: admin
Language: C
Result: Accepted
Time:9 ms
Memory:1144 kb
****************************************************************/