Sunday 7 April 2013

TREE TRAVERSAL TECHNIQUICES



#include<stdio.h>
#include<conio.h>
#include<alloc.h>
struct node
{
int data;
struct node *left,*right;
};
struct node *root;
void ins(struct node *n,int val,int opt)
{
   struct node *t;
   t=(struct node *)malloc(sizeof(struct node));
   t->data=val;
   t->right=t->left=NULL;
   if (opt==1)
    n->left=t;
   else
     n->right=t;
   printf("\n %d is inserted",val);
   if (opt==1)
   {
   printf("\tat the left\n");

   getch();
   }
   else
   {
   printf("\tat the right\n");
   getch();
   }
}
void inser(struct node *t,int x)
{
if (t->data >x)
if (t->left==NULL)
ins(t,x,1);
else
inser(t->left,x);
else if (t->data < x)
if (t->right==NULL)
ins(t,x,2);
else
inser(t->right,x);
else
  printf("\n Element is already present in the list\n");
}
void inorder(struct node *p)
{
  if (p!=NULL)
  {

  inorder(p->left);
  printf("\n %5d",p->data);
  inorder (p->right);
  }
}
void preorder(struct node *p)
{
  if (p!=NULL)
  {
  printf("\n %5d",p->data);
  preorder(p->left);
  preorder (p->right);
  }
}
 void postorder(struct node *p)
{
  if (p!=NULL)
  {
  preorder(p->left);
  preorder (p->right);
  printf("\n %5d",p->data);
  }
}
 void main()
{
int op,n;
root=(struct node *)malloc(sizeof(struct node));
root->data=30;
root->right=root->left=NULL;

clrscr();
do
{
    printf("\n 1.Insertion");
    printf("\n 2.Preorder");
    printf("\n 3.Inorder");
    printf("\n 4.Postorder");
    printf("\n 5.Quit");
    printf("\n Enter your choice\n");
    scanf("%d",&op);
  switch (op)
   {
    case 1: printf("\n Enter the element to insert\n");
    scanf("%d",&n);
    inser(root,n);
    break;
    case 2: printf("\n The preorder elements are\n");
    preorder(root);
    getch();
     break;
    case 3: printf("\n The inorder elements are\n");
     inorder(root);
    getch();
     break;
    case 4: printf("\n The postorder elements are\n");
     postorder(root);
     getch();
break;

     default: exit(0);

   }

  }while(op<5);

  getch();
   }

Output:
 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
2

 2 is inserted  at the left

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
3

 3 is inserted  at the right

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
4

 4 is inserted  at the right

 Enter the element to insert
5

 5 is inserted  at the right

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
6

 6 is inserted  at the right

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
8

 8 is inserted  at the right

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
1

 Enter the element to insert
9

 9 is inserted  at the right

 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
2

 The preorder elements are

             30
              2
              3
              4
              5
              6
              8
              9
 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
3

 The inorder elements are

              2
              3
              4
              5
              6
              8
              9
             30
 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
4

 The postorder elements are

              2
              3
              4
              5
              6
              8
              9
             30
 1.Insertion
 2.Preorder
 3.Inorder
 4.Postorder
 5.Quit
 Enter your choice
5

No comments:

Post a Comment