7.BST traversal methods
Sun Apr 26 2026 13:30:22 GMT+0000 (Coordinated Universal Time)
Saved by @jenny
#include <stdio.h>
#include <stdlib.h>
// Node structure
struct node {
int data;
struct node *left, *right;
};
// Create node
struct node* create(int x) {
struct node* newnode = (struct node*)malloc(sizeof(struct node));
newnode->data = x;
newnode->left = newnode->right = NULL;
return newnode;
}
// Insert
struct node* insert(struct node* root, int x) {
if (root == NULL)
return create(x);
if (x < root->data)
root->left = insert(root->left, x);
else
root->right = insert(root->right, x);
return root;
}
// Traversals
void inorder(struct node* root) {
if (root != NULL) {
inorder(root->left);
printf("%d ", root->data);
inorder(root->right);
}
}
void preorder(struct node* root) {
if (root != NULL) {
printf("%d ", root->data);
preorder(root->left);
preorder(root->right);
}
}
void postorder(struct node* root) {
if (root != NULL) {
postorder(root->left);
postorder(root->right);
printf("%d ", root->data);
}
}
// Main
int main() {
struct node* root = NULL;
int ch, x;
do {
printf("\n--- BST MENU ---\n");
printf("1.Insert\n2.Inorder\n3.Preorder\n4.Postorder\n5.Exit\n");
printf("Enter choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Enter value: ");
scanf("%d", &x);
root = insert(root, x);
break;
case 2:
printf("Inorder: ");
inorder(root);
printf("\n");
break;
case 3:
printf("Preorder: ");
preorder(root);
printf("\n");
break;
case 4:
printf("Postorder: ");
postorder(root);
printf("\n");
break;
case 5:
printf("Exiting...\n");
break;
default:
printf("Invalid choice!\n");
}
} while (ch != 5);
return 0;
}



Comments