#include <stdio.h>
#include <stdlib.h>
struct node
{
int element;
struct node *left;
struct node *right;
};
struct node *root = NULL;
struct node *insert(struct node *root,struct node *newnode)
{
if(root == NULL)
{
root = newnode;
}
else
{
if(newnode->element < root->element)
{
if (root->left == NULL)
root->left = newnode;
else
insert(root->left,newnode);
}
else if(newnode->element > root->element)
{
if(root->right == NULL)
root->right = newnode;
else
insert(root->right,newnode);
}
else
printf("\n\t Element already exists \n\n");
}
return root;
}
void find(int val,struct node *root)
{
if(root == NULL)
printf("\n\n\t\tElement not found");
else
{
if(val<root->element)
find(val,root->left);
else if(val>root->element)
find(val,root->right);
else
printf("\n\n\tElement Found");
}
}
void preorder(struct node *root)
{
if(root != NULL)
{
printf("%d --> ",root->element);
preorder(root->left);
preorder(root->right);
}
}
void inorder(struct node *root)
{
if(root!= NULL)
{
inorder(root->left);
printf("%d --> ",root->element);
inorder(root->right);
}
}
void postorder(struct node *root)
{
if(root != NULL)
{
postorder(root->left);
postorder(root->right);
printf("%d --> ",root->element);
}
}
int main()
{
int ch,val;
struct node *newnode;
do
{
printf("\n\n\t\t Binary Search Tree \n");
printf("\n\t<1> Insertion");
printf("\n\t<2> Traversal Techniques");
printf("\n\t<3> Search");
printf("\n\t<4> Exit");
printf("\n\t Enter Your Choice: ");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\n\n\tInserting Element : ");
scanf("%d",&val);
newnode = (struct node *)malloc(sizeof(struct node));
newnode->element = val;
newnode->left = NULL;
newnode->right = NULL;
root = insert(root,newnode);
printf("\n\n\tInorder : ");
inorder(root);
break;
case 2:
if(root == NULL)
printf("\n\tEmpty tree ");
else
{
printf("\n\n\tInorder Traversal : ");
inorder(root);
printf("\n\n\tPreorder Traversal : ");
preorder(root);
printf("\n\n\tPostorder Traversal : ");
postorder(root);
}
break;
case 3:
printf("\n\n\tSearch Element : ");
scanf("%d",&val);
find(val,root);
break;
case 4:exit(0);
default: printf("\n\t Invalid Choice\n\n");
break;
}
}while(ch!= 4);
return 0;
}