#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node
{
       int info;
       struct node* llink;
       struct node* rlink;
};
typedef struct node* NODE;

NODE insert(NODE root,int data)
{
     NODE temp,cur,prev;
     temp=(NODE)malloc(sizeof(struct node));
     if(temp==NULL) printf("\nOut of memory");
     temp->info=data;
     temp->rlink=temp->llink=NULL;
     if(root == NULL) 
     { 
     printf("\n1st time\n");
     root=temp;
     return root; 
     }
         prev=NULL;
         cur=root;
         while(cur != NULL)
         {
            prev=cur;
            if(cur->info == data)
            {
               printf("\ncannot insert duplicate data!\n");
               free(temp);
               return root;
            }
            if(data < cur->info)
               cur=cur->llink;
            else
               cur=cur->rlink;
         }
         if(data < prev->info)
           prev->llink=temp;
         else
           prev->rlink=temp;
     return root;
}

void preorder(NODE root)
{
     if(root == NULL) return;
     printf("\t%d",root->info);
     preorder(root->llink);
     preorder(root->rlink);
}
    
int main()
{
   NODE root=NULL;
   int choice,data;
   for(;;)
   {
   printf("\n   MENU\n");
   printf("\n1:insert\n2:display\nEnter your choice:");
   scanf("%d",&choice);
   switch(choice)
   {
      case 1:printf("\nEnter the data:");
             scanf("%d",&data);
             insert(root,data);   break;
      case 2:printf("\nPreorder traversal:\n");
             preorder(root); break;
      default:exit(0);
   }
   }
   getch();
   return 0;
}

the code is not creating the tree properly, even when i am inserting the second time it prints "1st time".Can anyone please tell me what is wrong??

Thanks in advance.

This question has already been answered. Start a new discussion instead.