#include <stdio.h>
#include <malloc.h>
struct node{
        int val;
        struct node *left;
        struct node *right;
        };
        
void create(int co, struct node **leaf){
 if(*leaf==0){
   (*leaf)=malloc(sizeof(**leaf));
   (*leaf)->val=co;
   (*leaf)->left=0;
   (*leaf)->right=0;
   }
 else if(co<(*leaf)->val){
   create(co, &(*leaf)->left);
   }
 else if(co>=(*leaf)->val){
   create(co, &(*leaf)->right);
   }
}

void traverse(struct node *r)
{
    if(r)
    {
        printf("%d ",r->val);
        traverse(r->left);
        traverse(r->right);
    }
}
int main()
{
 struct node *root;
 int i;
 int f[]={1,2,3,4,5};
 int c = sizeof(f)/sizeof(int);
 root=0;
 for(i=0;i<c;i++){
   create(f[i], &root);
 }
 traverse(root);
 return 0;
}
