PROGRAM TO PERFORM BASIC OPERATIONS ON A BINARY SEARCH TREE
//PROGRAM TO PERFORM BASIC OPERATIONS ON A BINARY SEARCH TREE
#include<stdio.h>
#include<conio.h>
struct tree
{
struct tree *left;
int info;
struct tree *right;
};
void insert(struct tree **ptr,int item)
{
if(*ptr==NULL)
{
*ptr=(struct tree *)malloc(sizeof(struct tree));
(*ptr)->left=(*ptr)->right=NULL;
(*ptr)->info=item;
return;
}
else
{
if(item<(*ptr)->info)
{
insert(&((*ptr)->left),item);
}
else
{
insert(&((*ptr)->right),item);
}
return;
}
}
void delete_tree(struct tree **ptr,int item)
{
struct tree *move,*back,*temp;
if(*ptr==NULL)
{
printf("nEmpty tree..............n");
return;
}
else
{
move=*ptr;
back=move;
while(move->info!=item)
{
back=move;
if(item<move->info)
{
move=move->left;
}
else
{
move=move->right;
}
}
if(move->left!=NULL&&move->right!=NULL)
{
temp=move->right;
while(temp->left!=NULL)
{
back=temp;
temp=temp->left;
}
move->info=temp->info;
move=temp;
}
if(move->left==NULL&&move->right==NULL)
{
if(back->right==move)
{
back->right=NULL;
}
else
{
back->left=NULL;
}
free(move);
return;
}
if(move->left==NULL&&move->right!=NULL)
{
if(back->left==move)
{
back->left=move->right;
}
else
{
back->right=move->right;
}
free(move);
return;
}
if(move->left!=NULL&&move->right==NULL)
{
if(back->left==move)
{
back->left=move->left;
}
else
{
back->right=move->left;
}
free(move);
return;
}
}
}
void preorder(struct tree *ptr)
{
struct tree *move;
move=ptr;
if(move!='')
{
printf(" %d ",move->info);
preorder(move->left);
preorder(move->right);
}
else
return;
}
void inorder(struct tree *ptr)
{
struct tree *move;
move=ptr;
if(move!='')
{
inorder(move->left);
printf(" %d ",move->info);
inorder(move->right);
}
else
return;
}
void postorder(struct tree *ptr)
{
struct tree *move;
move=ptr;
if(move!='')
{
postorder(move->left);
postorder(move->right);
printf(" %d ",move->info);
}
else
return;
}
void main()
{
struct tree *root='';
int item,ch,order;
char choice,ch1;
clrscr();
do
{
printf("n____________Tree MENU_______________nn");
printf("1.Insert.n");
printf("2.Delete.n");
printf("3.Traversal.n");
printf("4.Exit.n");
printf("nEnter your choice : ");
scanf("%d",&ch);
switch(ch)
{
case 1: printf("nEnter the element to be inserted : ");
scanf("%d",&item);
insert(&root,item);
break;
case 2: printf("nEnter the element to be deleted : ");
scanf("%d",&item);
delete_tree(&root,item);
break;
case 3: printf("nna.Preorder.n");
printf("b.inorder.n");
printf("c.Postorder.n");
printf("nEnter your choice : ");
ch1=getche();
printf("nnTree : ");
switch(ch1)
{
case 'a': preorder(root);
break;
case 'b': inorder(root);
break;
case 'c': postorder(root);
break;
}
break;
default: exit(0);
}
fflush(stdin);
}while(ch!=4);
}
OUTPUT:
____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 20 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 19 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 29 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 6 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 10 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 5 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 15 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 13 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 25 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 27 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 1 Enter the element to be inserted : 32 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 3 a.Preorder. b.inorder. c.Postorder. Enter your choice : b Tree : 5 6 10 13 15 19 20 25 27 32 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 2 Enter the element to be deleted : 20 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 3 a.Preorder. b.inorder. c.Postorder. Enter your choice : b Tree : 5 6 10 13 15 19 25 27 29 32 ____________Tree MENU_______________ 1.Insert. 2.Delete. 3.Traversal. 4.Exit. Enter your choice : 4
Get an instant access to your coding work remotely from anywhere on any device(PC/android/iOS) with your online private work space using hosted windows virtual desktop from CloudDesktopOnline. Try out hosted SharePoint and other hosted software products from www.Apps4Rent.com for better team collaboration.

