Document
Document
h>
#include<stdlib.h>
struct node{
int data;
};
int i=-1,j=-1;
new->data=data;
new->left=NULL;
new->right=NULL;
if(i==-1)
i++;
root=new;
else
if (temp->left==NULL)
temp->left=new;
else
temp->right=new;
i++;
}
}
j++;
arr[j]=new;
root=root->left;
while(root->right!=NULL)
root=root->right;
return root;
if(root==NULL){
return 0;
if(root->left==NULL&&root->right==NULL){
free(root);
return 0;
if(value<root->data){
root->left=bt_delete(root->left,value);
else if(value>root->data){
root->right=bt_delete(root->right,value);
else{
iPre=inOrderPredecessor(root);
root->data=iPre->data;
root->left=bt_delete(root->left,iPre->data);
return 1;
new->data=data;
new->left=NULL;
new->right=NULL;
if(root==NULL)
root=new;
else
while(temp)
if(new->data<temp->data)
if(temp->left==NULL)
temp->left=new;
break;
temp=temp->left;
else
if(temp->right==NULL)
temp->right=new;
break;
temp=temp->right;
while(cur->left!=NULL) {
cur=cur->left;
return cur;
while(cur!=NULL&&cur->data!=item)
parent=cur;
if(item<cur->data)
cur=cur->left;
else
cur=cur->right;
while(cur!=NULL&&cur->data!=item)
{
parent=cur;
if(item<cur->data)
cur=cur->left;
else
cur=cur->right;
if(cur==NULL)
return 0;
if(cur->left==NULL&&cur->right==NULL)
if(cur!=root)
if(parent->left==cur)
parent->left=NULL;
else
parent->right=NULL;
else
root=NULL;
return 1;
else if(cur->left&&cur->right)
int val=succ->data;
bst_delete(succ->data);
cur->data=val;
return 1;
else
{
if(cur!=root)
if (cur==parent->left)
parent->left=child;
else
parent->right=child;
else
root=child;
return 1;
return 1;
if(temp!=NULL)
printf("%d ",temp->data);
trav_pre(temp->left);
trav_pre(temp->right);
if(temp!=NULL)
trav_in(temp->left);
printf("%d ",temp->data);
trav_in(temp->right);
}
if(temp!=NULL)
trav_pos(temp->left);
trav_pos(temp->right);
printf("%d ",temp->data);
void bt()
printf("Enter 6 to Exit\n");
while(1)
int ch,data;
scanf("%d",&ch);
switch(ch)
case 1:
scanf("%d",&data);
bt_insert(data);
break;
case 2:
scanf("%d",&data);
if (bt_delete(root,data))
else
break;
case 3:
trav_in(root);
printf("\n");
break;
case 4:
trav_pre(root);
printf("\n");
break;
case 5:
trav_pos(root);
printf("\n");
break;
case 6:
root=NULL;
return;
default:
printf("Invalid choice!\n");
void bst()
{
printf("Enter 1 to Insert a node\n");
printf("Enter 6 to Exit\n");
while(1)
int ch,data;
scanf("%d",&ch);
switch(ch)
case 1:
scanf("%d",&data);
bst_insert(data);
break;
case 2:
scanf("%d",&data);
if (bst_delete(data))
else
break;
case 3:
trav_in(root);
printf("\n");
break;
case 4:
trav_pre(root);
printf("\n");
break;
case 5:
trav_pos(root);
printf("\n");
break;
case 6:
root=NULL;
return;
default:
printf("Invalid choice!\n");
void main()
while(1)
int ch;
scanf("%d",&ch);
switch(ch)
case 1:
bt();
break;
case 2:
bst();
break;
case 3:
printf("Thanks!");
return;
default:
printf("Invalid choice!\n");