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

struct node {
  int item;
  struct node * left;
  struct node * right;
};
typedef struct node * tptr;

tptr insert(tptr root, int key);
void inorder(tptr root);
void preorder(tptr root);
void postorder(tptr root);

int main() {
  int choice, key;
  tptr root = NULL;
  printf("\n***** BST Operations *****\n");
  printf("1.Insert\n");
  printf("2.Inorder Display\n");
  printf("3.Preorder Display\n");
  printf("4.Postorder Display\n");
  printf("5.Exit\n");

  while (1) {
    printf("\nEnter Choice: ");
    scanf("%d", & choice);

    switch (choice) {
    case 1:
      printf("Enter Element to be inserted: ");
      scanf("%d", & key);
      root = insert(root, key);
      break;
    case 2:
      printf("Inorder Traversal :");
      inorder(root);
      break;
    case 3:
      printf("Preorder Traversal :");
      preorder(root);
      break;
    case 4:
      printf("Postorder Traversal :");
      postorder(root);
      break;
    case 5:
      exit(1);
    default:
      printf("\n...Invalid Choice...\n");
    }
  }
}

tptr insert(tptr root, int key) {

  if (root == NULL) {
    tptr p;
    p = malloc(sizeof(struct node));
    p -> item = key;
    p -> left = NULL;
    p -> right = NULL;
    root = p;
  } else if (key < root -> item)
    root -> left = insert(root -> left, key);
  else if (key > root -> item)
    root -> right = insert(root -> right, key);
  return root;
}

void inorder(tptr root) {
  if (root == NULL)
    return;
  inorder(root -> left);
  printf("%d \t", root -> item);
  inorder(root -> right);
}

void preorder(tptr root) {
  if (root == NULL)
    return;
  printf("%d \t", root -> item);
  preorder(root -> left);
  preorder(root -> right);
}

void postorder(tptr root) {
  if (root == NULL)
    return;
  postorder(root -> left);
  postorder(root -> right);
  printf("%d \t", root -> item);
}
     
           
Note: Need to be arranged in compiler after copied
   

 OutPut:

***** BST Operations ***** 1.Insert 2.Inorder Display 3.Preorder Display 4.Postorder Display 5.Exit Enter Choice: 1 Enter Element to be inserted: 10 Enter Choice: 1 Enter Element to be inserted: 6 Enter Choice: 1 Enter Element to be inserted: 20 Enter Choice: 1 Enter Element to be inserted: 12 Enter Choice: 2 Inorder Traversal :6 10 12 20 Enter Choice: 3 Preorder Traversal :10 6 20 12 Enter Choice: 4 Postorder Traversal :6 12 20 10 Enter Choice: 5