Untitled
#include <stdio.h> #include <stdlib.h> // Node structure for the binary search tree struct Node { int data; struct Node* left; struct Node* right; }; // Function to create a new node struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // Function to insert a new node into the binary search tree struct Node* insert(struct Node* root, int data) { if (root == NULL) { return createNode(data); } if (data < root->data) { root->left = insert(root->left, data); } else if (data > root->data) { root->right = insert(root->right, data); } return root; } // Inorder traversal (left-root-right) void inorderTraversal(struct Node* root) { if (root != NULL) { inorderTraversal(root->left); printf("%d ", root->data); inorderTraversal(root->right); } } // Preorder traversal (root-left-right) void preorderTraversal(struct Node* root) { if (root != NULL) { printf("%d ", root->data); preorderTraversal(root->left); preorderTraversal(root->right); } } // Postorder traversal (left-right-root) void postorderTraversal(struct Node* root) { if (root != NULL) { postorderTraversal(root->left); postorderTraversal(root->right); printf("%d ", root->data); } } // Main function to test binary search tree traversal int main() { struct Node* root = NULL; // Example data for the binary search tree root = insert(root, 50); insert(root, 30); insert(root, 70); insert(root, 20); insert(root, 40); insert(root, 60); insert(root, 80); printf("Inorder Traversal: "); inorderTraversal(root); printf("\n"); printf("Preorder Traversal: "); preorderTraversal(root); printf("\n"); printf("Postorder Traversal: "); postorderTraversal(root); printf("\n"); return 0; } /* Inorder Traversal: 20 30 40 50 60 70 80 Preorder Traversal: 50 30 20 40 70 60 80 Postorder Traversal: 20 40 30 60 80 70 50 */
Leave a Comment