# include <stdio.h>
# include <stdlib.h>
# include <stdlib.h>
typedef struct BST {
int data;
struct BST *lchild, *rchild;
} node;
int data;
struct BST *lchild, *rchild;
} node;
void insert(node *, node *);
void inorder(node *);
void preorder(node *);
void postorder(node *);
node *search(node *, int, node **);
node *get_node();
int main()
{
int choice;
char ans = 'N';
int key;
node *new_node, *root, *tmp, *parent;
node *get_node();
root = NULL;
{
int choice;
char ans = 'N';
int key;
node *new_node, *root, *tmp, *parent;
node *get_node();
root = NULL;
printf("\nProgram For Binary Search Tree ");
printf("\n1.Create");
printf("\n2.Search");
printf("\n3.Recursive Traversals");
printf("\n4.Exit");
do
{
printf("\nEnter your choice :");
scanf("%d", &choice);
printf("\n1.Create");
printf("\n2.Search");
printf("\n3.Recursive Traversals");
printf("\n4.Exit");
do
{
printf("\nEnter your choice :");
scanf("%d", &choice);
switch (choice)
{
case 1:
do
{
new_node = get_node();
printf("\nEnter The Element : ");
scanf("%d", &new_node->data);
{
case 1:
do
{
new_node = get_node();
printf("\nEnter The Element : ");
scanf("%d", &new_node->data);
if (root == NULL)
/* Tree is not Created */
root = new_node;
else
insert(root, new_node);
/* Tree is not Created */
root = new_node;
else
insert(root, new_node);
printf("\nWant To enter More Elements?(y/n) : ");
scanf("%s", &ans);
} while (ans == 'y');
break;
scanf("%s", &ans);
} while (ans == 'y');
break;
case 2:
printf("\nEnter Element to be searched :");
scanf("%d", &key);
printf("\nEnter Element to be searched :");
scanf("%d", &key);
tmp = search(root, key, &parent);
printf("\nParent of node %d is %d", tmp->data, parent->data);
break;
printf("\nParent of node %d is %d", tmp->data, parent->data);
break;
case 3:
if (root == NULL)
printf("Tree Is Not Created");
else
{
printf("\nThe Inorder display : ");
inorder(root);
printf("\nThe Preorder display : ");
preorder(root);
printf("\nThe Postorder display : ");
postorder(root);
}
break;
}
} while (choice != 4);
return 0;
}
if (root == NULL)
printf("Tree Is Not Created");
else
{
printf("\nThe Inorder display : ");
inorder(root);
printf("\nThe Preorder display : ");
preorder(root);
printf("\nThe Postorder display : ");
postorder(root);
}
break;
}
} while (choice != 4);
return 0;
}
/*
Get new Node
*/
node *get_node()
{
node *temp;
temp = (node *) malloc(sizeof(node));
temp->lchild = NULL;
temp->rchild = NULL;
return temp;
}
Get new Node
*/
node *get_node()
{
node *temp;
temp = (node *) malloc(sizeof(node));
temp->lchild = NULL;
temp->rchild = NULL;
return temp;
}
/*
This function is for creating a binary search tree
*/
void insert(node *root, node *new_node)
{
if (new_node->data < root->data)
{
if (root->lchild == NULL)
root->lchild = new_node;
else
insert(root->lchild, new_node);
}
This function is for creating a binary search tree
*/
void insert(node *root, node *new_node)
{
if (new_node->data < root->data)
{
if (root->lchild == NULL)
root->lchild = new_node;
else
insert(root->lchild, new_node);
}
if (new_node->data > root->data)
{
if (root->rchild == NULL)
root->rchild = new_node;
else
insert(root->rchild, new_node);
}
}
{
if (root->rchild == NULL)
root->rchild = new_node;
else
insert(root->rchild, new_node);
}
}
/*
This function is for searching the node from
binary Search Tree
*/
node *search(node *root, int key, node **parent)
{
node *temp;
temp = root;
while (temp != NULL)
{
if (temp->data == key)
{
printf("\nThe %d Element is Present", temp->data);
return temp;
}
*parent = temp;
This function is for searching the node from
binary Search Tree
*/
node *search(node *root, int key, node **parent)
{
node *temp;
temp = root;
while (temp != NULL)
{
if (temp->data == key)
{
printf("\nThe %d Element is Present", temp->data);
return temp;
}
*parent = temp;
if (temp->data > key)
temp = temp->lchild;
else
temp = temp->rchild;
}
return NULL;
}
temp = temp->lchild;
else
temp = temp->rchild;
}
return NULL;
}
/*
This function displays the tree in inorder fashion
*/
void inorder(node *temp)
{
if (temp != NULL)
{
inorder(temp->lchild);
printf("%d ", temp->data);
inorder(temp->rchild);
}
}
This function displays the tree in inorder fashion
*/
void inorder(node *temp)
{
if (temp != NULL)
{
inorder(temp->lchild);
printf("%d ", temp->data);
inorder(temp->rchild);
}
}
/*
This function displays the tree in preorder fashion
*/
void preorder(node *temp)
{
if (temp != NULL)
{
printf("%d ", temp->data);
preorder(temp->lchild);
preorder(temp->rchild);
}
}
This function displays the tree in preorder fashion
*/
void preorder(node *temp)
{
if (temp != NULL)
{
printf("%d ", temp->data);
preorder(temp->lchild);
preorder(temp->rchild);
}
}
/*
This function displays the tree in postorder fashion
*/
void postorder(node *temp)
{
if (temp != NULL)
{
postorder(temp->lchild);
postorder(temp->rchild);
printf("%d ", temp->data);
}
}
This function displays the tree in postorder fashion
*/
void postorder(node *temp)
{
if (temp != NULL)
{
postorder(temp->lchild);
postorder(temp->rchild);
printf("%d ", temp->data);
}
}
Output :
Program For Binary Search Tree 1.Create 2.Search 3.Recursive Traversals 4.Exit Enter your choice :1 Enter The Element : 12 Want To enter More Elements?(y/n) : y Enter The Element : 23 Want To enter More Elements?(y/n) : y Enter The Element : 34 Want To enter More Elements?(y/n) : y Enter The Element : 32 Want To enter More Elements?(y/n) : n Enter your choice :2 Enter Element to be searched :23 The 23 Element is Present Parent of node 23 is 12 Enter your choice :3 The Inorder display : 12 23 32 34 The Preorder display : 12 23 34 32 The Postorder display : 32 34 23 12 Enter your choice :4
0 Comments