The program will

  • add a node to the tree

  • Perform Inorder Traversal

  • Perform Preorder Traversal

  • Perform Postorder Traversal

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
typedef struct node
{
	int d;
	struct node *right, *left;
}Node;
Node *root=NULL;
void add()
{
	int x, y;
	Node *p, *q;
	p = (Node *)malloc(sizeof(Node));
	p->left=NULL;
	p->right=NULL;
	printf("\nEnter a value:");
	scanf("%d", &p->d);
	if(root==NULL)
	{
		root = p;
		return;
	}
	q = root;
	while(q!=NULL)
	{
		x = q->d;
		y = p->d;
		if(y<x)
		{	if(q->left==NULL)
			{
				q->left=p;
				return;
			}
			q = q->left;
		}
		if(y>x)
		{
			if(q->right==NULL)
			{
				q->right = p;
				return;
			}
			q = q->right;
		}
	}
}
void inorder(Node *q)
{
	if(q!=NULL)
	{
		inorder(q->left);
		printf("%d ", q->d);
		inorder(q->right);
	}
}
void preorder(Node *q)
{
	if(q!=NULL)
	{
		printf("%d ", q->d);
		preorder(q->left);
		preorder(q->right);
	}
}
void postorder(Node *q)
{
	if(q!=NULL)
	{
		postorder(q->left);
		postorder(q->right);
		printf("%d ", q->d);
	}
}
void main()
{
	Node *q;
	int ch;
	clrscr();
	do{
		printf("\nMENU");
		printf("\n1. Insert");
		printf("\n2. Inorder Traversal");
		printf("\n3. Preorder Traversal");
		printf("\n4. Postorder Traversal");
		printf("\n5. Exit.");
		printf("\nEnter your choice: ");
		scanf("%d", &ch);
		switch(ch)
		{
			case 1:
			add();
			break;
			case 3:
			preorder(root);
			break;
			case 2:
			inorder(root);
			break;
			case 4:
			postorder(root);
			break;
			case 5:
			printf("\nThank you");
			break;
			default:
			printf("\nWrong choice.");
		}
	}while(ch!=5);
	getch();
}