Binary Search Tree_merged (1)
Binary Search Tree_merged (1)
h>
#include <stdlib.h>
struct node {
int data;
struct node *right;
struct node *left;
};
if (root == NULL) {
root = new;
return root;
}
if (n < temp->data)
temp->left = insert(temp->left, n);
else if (n > temp->data)
temp->right = insert(temp->right, n);
else {
printf("Element already exists.\n");
free(new);
}
return root;
}
return root;
}
// Find height
int findHeight(struct node *root) {
if (root == NULL) return -1;
int leftHeight = findHeight(root->left);
int rightHeight = findHeight(root->right);
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1;
}
int main() {
int ch, n, m;
do {
printf("\n\n--- Binary Search Tree Menu ---");
printf("\n1. Insert");
printf("\n2. Delete");
printf("\n3. Inorder Traversal");
printf("\n4. Preorder Traversal");
printf("\n5. Postorder Traversal");
printf("\n6. Count Total Nodes");
printf("\n7. Count Leaf Nodes");
printf("\n8. Find Smallest Value");
printf("\n9. Find Largest Value");
printf("\n10. Find Height of BST");
printf("\n11. Exit");
printf("\nEnter your choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Enter element to insert: ");
scanf("%d", &n);
root = insert(root, n);
break;
case 2:
if (root == NULL)
printf("Tree is empty.\n");
else {
printf("Enter element to delete: ");
scanf("%d", &m);
root = delete(root, m);
}
break;
case 3:
if (root == NULL)
printf("Tree is empty.\n");
else {
printf("Inorder Traversal: ");
inorder(root);
printf("\n");
}
break;
case 4:
if (root == NULL)
printf("Tree is empty.\n");
else {
printf("Preorder Traversal: ");
preorder(root);
printf("\n");
}
break;
case 5:
if (root == NULL)
printf("Tree is empty.\n");
else {
printf("Postorder Traversal: ");
postorder(root);
printf("\n");
}
break;
case 6:
printf("Total nodes: %d\n", countNodes(root));
break;
case 7:
printf("Leaf nodes: %d\n", countLeafNodes(root));
break;
case 8:
if (root == NULL)
printf("Tree is empty.\n");
else
printf("Smallest value: %d\n", findSmallest(root));
break;
case 9:
if (root == NULL)
printf("Tree is empty.\n");
else
printf("Largest value: %d\n", findLargest(root));
break;
case 10:
printf("Height of BST: %d\n", findHeight(root));
break;
case 11:
printf("Exiting...\n");
break;
default:
printf("Invalid choice.\n");
}
} while (ch != 11);
return 0;
}
Output :