You are on page 1of 7

PROGRAM 10 :

10. Develop a menu driven Program in C for the following operations on Binary Search Tree (BST) of
Integers .

a. Create a BST of N Integers: 6, 9, 5, 2, 8, 15, 24, 14, 7, 8, 5, 2

b. Traverse the BST in Inorder, Preorder and Post Order

c. Search the BST for a given element (KEY) and report the appropriate message

d. Exit

#include <stdio.h>

#include <stdlib.h>

// Structure for a Binary Search Tree (BST) Node

struct Node {

int data;

struct Node* left;

struct Node* right;

};

// Function to create a new node with the given data

struct Node* createNode(int value) {

struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));

newNode->data = value;

newNode->left = newNode->right = NULL;

return newNode;

// Function to insert a value into the BST

struct Node* insert(struct Node* root, int value) {

if (root == NULL) {
return createNode(value);

if (value < root->data) {

root->left = insert(root->left, value);

} else if (value > root->data) {

root->right = insert(root->right, value);

return root;

// Function to perform inorder traversal of the BST

void inorderTraversal(struct Node* root) {

if (root != NULL) {

inorderTraversal(root->left);

printf("%d ", root->data);

inorderTraversal(root->right);

// Function to perform preorder traversal of the BST

void preorderTraversal(struct Node* root) {

if (root != NULL) {

printf("%d ", root->data);

preorderTraversal(root->left);

preorderTraversal(root->right);

// Function to perform postorder traversal of the BST


void postorderTraversal(struct Node* root) {

if (root != NULL) {

postorderTraversal(root->left);

postorderTraversal(root->right);

printf("%d ", root->data);

// Function to search for a value in the BST

struct Node* search(struct Node* root, int key) {

if (root == NULL || root->data == key) {

return root;

if (key < root->data) {

return search(root->left, key);

return search(root->right, key);

// Function to free the entire BST

void freeBST(struct Node* root) {

if (root != NULL) {

freeBST(root->left);

freeBST(root->right);

free(root);

int main() {
struct Node* root = NULL;

int i,choice, key;

// Create a BST of N Integers: 6, 9, 5, 2, 8, 15, 24, 14, 7, 8, 5, 2

int values[] = {6, 9, 5, 2, 8, 15, 24, 14, 7, 8, 5, 2};

int n = sizeof(values) / sizeof(values[0]);

for ( i = 0; i < n; i++) {

root = insert(root, values[i]);

do {

printf("\nMenu:\n");

printf("1. Traverse the BST (Inorder)\n");

printf("2. Traverse the BST (Preorder)\n");

printf("3. Traverse the BST (Postorder)\n");

printf("4. Search for an element\n");

printf("5. Exit\n");

printf("Enter your choice: ");

scanf("%d", &choice);

switch (choice) {

case 1:

printf("Inorder Traversal: ");

inorderTraversal(root);

printf("\n");

break;

case 2:

printf("Preorder Traversal: ");

preorderTraversal(root);

printf("\n");
break;

case 3:

printf("Postorder Traversal: ");

postorderTraversal(root);

printf("\n");

break;

case 4:

printf("Enter the element to search: ");

scanf("%d", &key);

if (search(root, key) != NULL) {

printf("Element %d is present in the BST.\n", key);

} else {

printf("Element %d is not present in the BST.\n", key);

break;

case 5:

freeBST(root);

printf("Exiting the program.\n");

break;

default:

printf("Invalid choice. Please enter a valid option.\n");

} while (choice != 5);

return 0;

OUTPUT:

Menu:

1. Traverse the BST (Inorder)


2. Traverse the BST (Preorder)

3. Traverse the BST (Postorder)

4. Search for an element

5. Exit

Enter your choice: 1

Inorder Traversal: 2 5 6 7 8 9 14 15 24

Menu:

1. Traverse the BST (Inorder)

2. Traverse the BST (Preorder)

3. Traverse the BST (Postorder)

4. Search for an element

5. Exit

Enter your choice: 2

Preorder Traversal: 6 5 2 9 8 7 15 14 24

Menu:

1. Traverse the BST (Inorder)

2. Traverse the BST (Preorder)

3. Traverse the BST (Postorder)

4. Search for an element

5. Exit

Enter your choice: 3

Postorder Traversal: 2 5 7 8 14 24 15 9 6

Menu:

1. Traverse the BST (Inorder)

2. Traverse the BST (Preorder)

3. Traverse the BST (Postorder)

4. Search for an element

5. Exit
Enter your choice: 4

Enter the element to search: 9

Element 9 is present in the BST.

Menu:

1. Traverse the BST (Inorder)

2. Traverse the BST (Preorder)

3. Traverse the BST (Postorder)

4. Search for an element

5. Exit

You might also like