BST (Binary Search Tree) implementation using C language
Operations: - Create tree, Preorder traversal, Postoreder treaversal, and Inoreder traversal
/* BINARY SEARCH TREE */
#include<stdio.h>
#include<conio.h>
struct node
{ int info;
struct node *left_child;
struct node *right_child;
}*p=NULL;
typedef struct node node;
typedef struct node * nptr;
//nptr p=NULL;
nptr create_tree(nptr,int);
void postorder(nptr);
void preorder(nptr);
void inorder(nptr);
void main()
{ int ch,num;
while(1)
{ clrscr();
printf("\nBINARY SEARCH TREE \n\n");
printf(" 1.Create tree\n");
printf(" 2.Inorder traversal\n");
printf(" 3.Preorder traversal\n");
printf(" 4.Postorder traversal\n");
printf(" 5.Exit\n");
printf("\n\nEnter ur choice: ");
scanf("%d",&ch);
switch(ch)
{ case 1: printf("\nenter the info: ");
scanf("%d",&num);
p=create_tree(p,num);
break;
case 2: inorder(p);
break;
case 3: preorder(p);
break;
case 4: postorder(p);
break;
case 5: exit(0);
default: printf("\n\nInvalid choice\n");
}
getch();
}
}
nptr create_tree(nptr p,int num)
{
nptr root;
if(p==NULL)
{ root=(nptr)malloc(sizeof(node));
root->left_child=NULL;
root->right_child=NULL;
//printf("\n\nenter number: ");
//scanf("%d",&num);
root->info=num;
p=root;
}
else
{ if(p->info>=num)
{ p->left_child=create_tree(p->left_child,num);
//printf("\nleft\n");
}
else
{ p->right_child=create_tree(p->right_child,num);
//printf("\nright\n");
}
}
return p;
}
void inorder(nptr p)
{ if(p!=NULL)
{ inorder(p->left_child);
printf("\n %d",p->info);
inorder(p->right_child);
}
}
void postorder(nptr p)
{ if(p!=NULL)
{ postorder(p->left_child);
postorder(p->right_child);
printf("\n %d",p->info);
}
}
void preorder(nptr p)
{ if(p!=NULL)
{ printf("\n %d",p->info);
preorder(p->left_child);
preorder(p->right_child);
}
}
Comments
Post a Comment