News:

Choose a design and let our professionals help you build a successful website   - ITAcumens

Main Menu

Program for demonstration of Tree Operations - INSERTION . INORDER . PREORDER .

Started by aruljothi, Mar 31, 2009, 11:09 AM

Previous topic - Next topic

aruljothi

# include<stdio.h>
# include <conio.h>
# include <malloc.h>

struct node
{
struct node *left;
int data;
struct node *right;
}     ;

void main()
{
void insert(struct node **,int);
void inorder(struct node *);
void postorder(struct node *);
void preorder(struct node *);
struct node *ptr;
int will,i,num;
ptr = NULL;
ptr->data=NULL;
clrscr();
printf("
      Program for Tree Traversal Demo
         @ Amit Mathur

");
printf("
Enter the number of terms you want to add to the tree.
");
scanf("%d",&will);

/* Getting Input */
for(i=0;i<will;i++)
   {
   printf("
Enter the item");
   scanf("%d",&num);
   insert(&ptr,num);
   }

getch();
printf("

      INORDER TRAVERSAL

");
inorder(ptr);
getch();
printf("

      PREORDER TRAVERSAL

");
preorder(ptr);
getch();
printf("

      POSTORDER TRAVERSAL

");
postorder(ptr);
getch();
}



void insert(struct node  **p,int num)
{


if((*p)==NULL)
{       printf("
Leaf node created.");
   (*p)=malloc(sizeof(struct node));
   (*p)->left = NULL;
   (*p)->right = NULL;
   (*p)->data = num;
   return;
}
else
{       if(num==(*p)->data)
      {
      printf("

      REPEATED ENTRY ERROR
      VALUE REJECTED

");
      return;
      }
   if(num<(*p)->data)
      {
         printf("
Directed to left link.");
         insert(&((*p)->left),num);
      }
   else
      {
      printf("
Directed to right link.");
      insert(&((*p)->right),num);
      }
}
return;
}


/* Tree Traversal Functions*/
////////////// INORDER (LDR) ////////////

void inorder(struct node *p)
{
   if(p!=NULL)
      {
      inorder(p->left);
      printf("
Data :%d",p->data);
      inorder(p->right);
      }
   else
      return;
}

////////////// PREORDER (DLR) ////////////

void preorder(struct node *p)
{
   if(p!=NULL)
      {
      printf("
Data :%d",p->data);
      preorder(p->left);
      preorder(p->right);
      }
   else
      return;
}


////////////// POSTORDER (LRD) ////////////

void postorder(struct node *p)
{
   if(p!=NULL)
      {
      postorder(p->left);
      postorder(p->right);
      printf("
Data :%d",p->data);
      }
   else
      return;
}