DS PRAC 09
DS PRAC 09
Experiment no 9: Write a C program to Program for insert, delete and tree traversals like In-
order, Preorder and Post-order of binary search tree.
Code:
#include <stdio.h>
#include <stdlib.h>
struct Node *deleteNode(struct Node *root, int data)//to delete the specific node
{
if (root == NULL)//when root is empty return root
{
return root;
}
if (data < root->data)
{ // when data is smaller then call detelenode with left of that element in recursion
root->left = deleteNode(root->left, data);
}
else if (data > root->data)
{ // when data is greater then call detelenode with right of that element in recursion
root->right = deleteNode(root->right, data);
}
else
{
if (root->left == NULL)
{//when left part of node is empty
struct Node *temp = root->right;
free(root);//free the root
return temp;//return temp node to previous calling function
}
else if (root->right == NULL)
{//when left of the passed root is null
struct Node *temp = root->left;//set temp node =left of root
free(root);//free the root node
return temp;//return the temp node to calling function
}
switch (choice)
{
case 1://calls insert function
printf("Enter value to insert: ");
scanf("%d", &data);
root = insert(root, data);
printf("%d inserted successfully.\n", data);
break;
case 2://calls delete function
printf("Enter value to delete: ");
scanf("%d", &data);
root = deleteNode(root, data);
printf("%d deleted successfully.\n", data);
break;
case 3://prints tree elements in Inorder
printf("In-order traversal: ");
inOrder(root);
printf("\n");
break;
case 4://Prints the element in PreOrder
printf("Pre-order traversal: ");
preOrder(root);
printf("\n");
break;
case 5://Prints tree elements in Postored
printf("Post-order traversal: ");
postOrder(root);
printf("\n");
break;
case 6://exit
printf("Exiting...\n");
break;
default:
printf("Invalid choice! Please try again.\n");
}
} while (choice != 6);
return 0;
}
Output:
PS C:\Users\adi\OneDrive\Desktop\CSE-3rdSem\DS\Practicals\pract9>gccBinarySearchTree.c
PS C:\Users\adi\OneDrive\Desktop\CSE-3rdSem\DS\Practicals\pract9> ./a.exe
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 1
Enter value to insert: 20
20 inserted successfully.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 1
Enter value to insert: 40
40 inserted successfully.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 1
Enter value to insert: 60
60 inserted successfully.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 1
Enter value to insert: 50
50 inserted successfully.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 4
In-order traversal: 20 40 50 60
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 5
Pre-order traversal: 20 40 60 50
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 6
Post-order traversal: 50 60 40 20
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 3
Enter value to search: 60
60 found in the tree.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 3
Enter value to search: 55
55 not found in the tree.
Menu:
1. Insert
2. Delete
3. Search
4. In-order Traversal
5. Pre-order Traversal
6. Post-order Traversal
7. Exit
Enter your choice: 7
Exiting...
PS C:\Users\adi\OneDrive\DSSesktop\CSE-3rdSem\DS\Practicals\pract9>