#include"stdio.h"
struct BT
{
int data;
struct BT *right,*left;
};
void insert(struct BT ** ptr,int d)
{
if((*ptr)==NULL)
{
(*ptr)=(struct BT*)malloc(sizeof(struct BT));
(*ptr)->data=d;
(*ptr)->left=(*ptr)->right=NULL;
}
else
{
if((*ptr)->data>d)
insert(&((*ptr)->left),d);
else
insert(&((*ptr)->right),d);
}
return;
}
int search(struct BT *ptr,int no)
{
if(ptr==NULL)
return(0);
if(ptr->data==no)
return(1);
if(ptr->data>no)
return(search(ptr->left,no));
else
return(search(ptr->right,no));
}
void inorder(struct BT *ptr)
{
if(ptr==NULL)
return;
else
{
inorder(ptr->left);
printf("\t%d",ptr->data);
inorder(ptr->right);
}
}
void preorder(struct BT*ptr)
{
if(ptr==NULL)
return;
else
{
printf("\t%d",ptr->data);
preorder(ptr->left);
preorder(ptr->right);
}
}
void postorder(struct BT*ptr)
{
if(ptr==NULL)
return;
else
{
postorder(ptr->left);
postorder(ptr->right);
printf("\t%d",ptr->data);
}
}
main()
{
struct BT*root;
int ch,d,no,f;
root=NULL;
while(ch!=6)
{
printf("\n 1.Insert\n 2.Search\n 3.Inorder\n 4.Preorder\n 5.Postorder\n 6.Exit\n");
printf("\n Enter the choice:");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("Enter the data:");
scanf("%d",&d);
insert(&root,d);
break;
case 2:
printf("Enter the node:");
scanf("%d",&no);
f=search(root,no);
if(f==0)
printf("Node is not present");
else
printf("Node is present");
break;
case 3:
inorder(root);
break;
case 4:
preorder(root);
break;
case 5:
postorder(root);
break;
case 6: break;
}
}
}
No comments:
Post a Comment