Binary Search Tree of Integers to Create and Traverse the BST in Inorder Preorder and Post Order in c program

Binary Search Tree of Integers to Create and Traverse the BST in Inorder Preorder and Post Order in c program and 3rd Sem Data Structure and Application lab 8th program

Design, Develop and Implement a menu driven Program in C for the following operations on Binary Search Tree (BST) of Integers
a. Create a BST of N Integers
b. Traverse the BST in Inorder, Preorder and Post Order

/* Design, Develop and Implement a menu driven Program in C for the following operations on Binary Search Tree (BST) of Integers
a. Create a BST of N Integers
b. Traverse the BST in Inorder, Preorder and Post Order */


#include <stdio.h>
#include <stdlib.h>

struct Node {
  int data;
  struct Node *left;
  struct Node *right;
};

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;
}

struct Node* insert(struct Node* node, int data) {
  if (node == NULL) {
    return createNode(data);
  }
  if (data < node->data) {
    node->left = insert(node->left, data);
  } else if (data > node->data) {
    node->right = insert(node->right, data);
  }
  return node;
}

void inorderTraversal(struct Node* node) {
  if (node == NULL) {
    return;
  }
  inorderTraversal(node->left);
  printf("%d ", node->data);
  inorderTraversal(node->right);
}

void preorderTraversal(struct Node* node) {
  if (node == NULL) {
    return;
  }
  printf("%d ", node->data);
  preorderTraversal(node->left);
  preorderTraversal(node->right);
}

void postorderTraversal(struct Node* node) {
  if (node == NULL) {
    return;
  }
  postorderTraversal(node->left);
  postorderTraversal(node->right);
  printf("%d ", node->data);
}

int main() {
  struct Node* root = NULL;
  int choice, data, n;

  printf("Enter the number of elements in the BST: ");
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    printf("Enter an element to insert: ");
    scanf("%d", &data);
    root = insert(root, data);
  }

  while (1) {
    printf("\nBinary Search Tree Operations:\n");
    printf("1. Inorder Traversal\n");
    printf("2. Preorder Traversal\n");
    printf("3. Postorder Traversal\n");
    printf("4. Exit\n");
    printf("Enter your choice: ");
    scanf("%d", &choice);

    switch (choice) {
      case 1:
        printf("Inorder Traversal: ");
        inorderTraversal(root);
        break;
      case 2:
        printf("Preorder Traversal: ");
        preorderTraversal(root);
        break;
      case 3:
        printf("Postorder Traversal: ");
        postorderTraversal(root);
        break;
      case 4:
      exit(0);
      default:printf("Invalid ");
    }
  }
}
       

Leave a Reply

Your email address will not be published. Required fields are marked *