Binary Search Tree Traversals
Binary Search Tree Traversals
#include<stdio.h>
#include<malloc.h>
void create();
void inorder();
void preorder();
void postorder();
void insert();
void delete();
void delete1();
void search1();
int smallest();
int largest();
int flag=1;
struct node
{
int info;
struct node *lptr,*rptr;
};
main()
{
create();
printf("\npreorder\n");
preorder(root);
printf("\nInorder\n");
inorder(root);
printf("\npostorder\n");
postorder(root);
insert();
printf("\nAfter Insert\n");
printf("\npreorder\n");
preorder(root);
printf("\nInorder\n");
inorder(root);
printf("\npostorder\n");
postorder(root);
delete();
printf("\nAfter Delete\n");
printf("\npreorder\n");
preorder(root);
printf("\nInorder\n");
inorder(root);
printf("\npostorder\n");
postorder(root);
}
/* To delete a node */
void delete1(struct node *t)
{
int k;
}
else
{
t1->rptr = t->lptr;
}
t = NULL;
free(t);
return;
}
/* To delete node having right hand child */
else if (t->lptr == NULL)
{
if (t1 == t)
{
root = t->rptr;
t1 = root;
}
else if (t1->rptr == t)
t1->rptr = t->rptr;
else
t1->lptr = t->rptr;
t == NULL;
free(t);
return;
}
void insert()
{
new=(struct node*)malloc(sizeof(struct node));
printf("\nEnter insert element\n");
scanf("%d",&x);
new->info=x;
new->lptr='\0';
new->rptr='\0';
if(root==NULL)
root=new;
else
{
t=root;
while(t!='\0')
{
p=t;
if(x>t->info)
t=t->rptr;
else
t=t->lptr;
}
if(x>p->info)
p->rptr=new;
else
p->lptr=new;
}
}
void create()
{
printf("\nEnter How Many Nodes:\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
new=(struct node*)malloc(sizeof(struct node));
scanf("%d",&x);
new->info=x;
new->lptr='\0';
new->rptr='\0';
if(root==NULL)
root=new;
else
{
t=root;
while(t!='\0')
{
p=t;
if(x>t->info)
t=t->rptr;
else
t=t->lptr;
}
if(x>p->info)
p->rptr=new;
else
p->lptr=new;
}
}
}