Professional Documents
Culture Documents
h>
#include<stdlib.h>
struct bstnode
int data;
}*root=NULL;
node *create();
int main()
while(1)
int ch,de,sec,flag;
node *temp,*min,*del;
printf("\n1.insert\n2.preorder\n3.inorder\n4.postorder\n5.findmin\n6.findmax\n7.search\n8.delete\n9
.exit\n");
scanf("%d",&ch);
switch(ch)
case 1:
temp=create();
if(root==NULL)
root=temp;
else
insert(root,temp);
break;
case 2:
preorder(root);
break;
case 3:
inorder(root);
break;
case 4:
postorder(root);
break;
case 5:
min=findmin(root);
break;
case 6:
findmax(root);
break;
case 7:
scanf("%d",&sec);
flag=search(root,sec);
if(flag==1)
printf("Element is found");
else
break;
case 8:
scanf("%d",&de);
del=delet(root,de);
break;
case 9:
exit(0);
return 0;
node *create()
node *temp;
int num;
temp=(node *)malloc(sizeof(node));
scanf("%d",&num);
temp->data=num;
temp->right=NULL;
temp->left=NULL;
return temp;
if(temp->data<root->data)
if(root->left!=NULL)
insert(root->left,temp);
else
root->left=temp;
if(temp->data>=root->data)
if(root->right!=NULL)
insert(root->right,temp);
else
root->right=temp;
if(root==NULL)
printf("no tree");
else if(root->left!=NULL)
findmin(root->left);
else
return root;
if(root==NULL)
printf("no tree");
else if(root->right!=NULL)
findmax(root->right);
else
if(root!=NULL)
printf("%d ",root->data);
preorder(root->left);
preorder(root->right);
}
void inorder(node *root)
if(root!=NULL)
inorder(root->left);
printf("%d ",root->data);
inorder(root->right);
if(root!=NULL)
postorder(root->left);
postorder(root->right);
printf("%d ",root->data);
if(ele<root->data)
root->left=delet(root->left,ele);
else if(ele>root->data)
root->right=delet(root->right,ele);
else
if(root->left==NULL&&root->right==NULL)
{
free(root);
return NULL;
else if(root->left==NULL||root->right==NULL)
node *temp;
if(root->left==NULL)
temp=root->right;
else
temp=root->left;
return temp;
else
node *temp=findmin(root->right);
root->data=temp->data;
root->right=delet(root->right,temp->data);
return root;
if(root==NULL)
return 0;
else if(root->data==sec)
return 1;
else if(root->data>sec)
search(root->left,sec);
else if(root->data<sec)
search(root->right,sec);
else
return 0;