My Profile

I, Das ShrikKrishna J. MCA III IMSCD&R, Ahmednagar.
Showing posts with label Binary Tree Traverse Using Inorder Preorder Postorder. Show all posts
Showing posts with label Binary Tree Traverse Using Inorder Preorder Postorder. Show all posts

Monday, 15 August 2011

Create a Binary Tree, Traverse Using Inorder, Preorder & Postorder

Write a Program in C to Create a Binary Tree, Traverse Using Inorder, Preorder & Postorder
 
#include<stdio.h>
#include<conio.h>
struct node
{
int data;
struct node *right, *left;
}*root,*p,*q;
struct node *make(int y)
{
struct node *newnode;
newnode=(struct node *)malloc(sizeof(struct node));
newnode->data=y;
newnode->right=newnode->left=NULL;
return(newnode);
}
void left(struct node *r,int x)
{
if(r->left!=NULL)
printf("\n Invalid !");
else
r->left=make(x);
}
void right(struct node *r,int x)
{
if(r->right!=NULL)
printf("\n Invalid !");
else
r->right=make(x);
}
void inorder(struct node *r)
{
if(r!=NULL)
{
inorder(r->left);
printf("\t %d",r->data);
inorder(r->right);
}
}
void preorder(struct node *r)
{
if(r!=NULL)
{
printf("\t %d",r->data);
preorder(r->left);
preorder(r->right);
}
}
void postorder(struct node *r)
{
if(r!=NULL)
{
postorder(r->left);
postorder(r->right);
printf("\t %d",r->data);
}
}
void create()
{
int no;
char choice='y';
printf("\nEnter the root:");
scanf("%d",&no);
root=make(no);
p=root;
while(choice=='y'||choice=='Y')
{
printf("\nEnter number:");
scanf("%d",&no);
if(no==-1)
break;
p=root;
q=root;
while(no!=p->data && q!=NULL)
{
p=q;
if(no<p->data)
q=p->left;
else
q=p->right;
}
if(no<p->data)
{
printf("Left branch of %d is %d\n",p->data,no);
left(p,no);
}
else
{
right(p,no);
printf("Right Branch of %d is %d\n",p->data,no);
}
printf("\t\t\t\t\t\t\t\tContinue ? ");
scanf(" %c",&choice);
}
}
void main()
{
int no,action;
clrscr();
while(1)
{
printf("\n\n1) Create\n");
printf("2) Inorder Traversal\n");
printf("3) Preorder Traversal\n");
printf("4) Postorder Traversal\n");
printf("5) Exit\n");
printf("Enter choice : ");
scanf("%d",&action);
switch(action)
{
case 1:
create();
break;
case 2:
printf("\n\nInorder Traversal is \n\t\t\t");
inorder(root);
break;
case 3:
printf("\n\nPreorder Traversal is \n\t\t\t");
preorder(root);
break;
case 4:
printf("\n\nPostorder Traversal is \n\t\t\t");
postorder(root);
break;
case 5:
exit();
break;
}
getch();
}
}

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cheap international calls