#include<stdio.h>
#include<stdlib.h>
struct node {
int key;
struct node *left;
struct node *right;
};
typedef struct node mynode;
mynode* insert(mynode *root, int key)
{
if(root == NULL) {
root = (mynode*)malloc(sizeof(mynode));
root->left = root->right = NULL;
return root;
}
if(root->key < key) {
root->right = insert(root->right, key);
} else {
root->left = insert(root->left, key);
}
return root;
}
void inorder(mynode *root)
{
printf("\nInorder traversal is :\n\n");
if(root != NULL) {
root->left=inorder(root->left);
printf("%d\t", root->key);
root->right=inorder(root->right);
}
return root;
}
void preorder(mynode *root)
{
printf("\nPreorder traversal is :\n\n");
if(root != NULL) {
printf("%d\t", root->key);
root->left=preorder(root->left);
root->right=preorder(root->right);
}
return root;
}
void postorder(mynode *root)
{
printf("\nPostorder traversal is :\n\n");
if(root != NULL) {
root->left=postorder(root->left);
root->right=postorder(root->right);
printf("%d\t", root->key);
}
return root;
}
int main()
{
mynode *root = NULL;
printf("Sagar in BST program\n");
root = insert(root,15);
root = insert(root,11);
root = insert(root,19);
root = insert(root,2);
root = insert(root,8);
root = insert(root,13);
root = insert(root,17);
inorder(root);
preorder(root);
postorder(root);
return 0;
}