#include <iostream.h>
struct bstree
{
int data;
bstree*left;
bstree*right;
};
bstree*root;
void creat()
{
bstree*root=NULL;
}
void insert(int element,bstree*&t)
{
if(t!=NULL)
{
if (t->data==element)
cout<<"error";
else
if(t->data<element)
insert(element,t->right);
else
insert (element,t->left);
}
else
t=new bstree;
t->data=element;
t->left=NULL;
t->right=NULL;
}
int find_min(bstree*&t)
{
if(t==NULL)
cout <<"tree is empty";
else
{
while(t->left!=NULL)
t=t->left;
return t->data;
}
}
bstree*find_element(int data,bstree*&t)
{
if(t->data==data)
return t;
else
{
if (t->data<data)
return find_element( data,t->right);
else
return find_element(data,t->left);
}
return NULL;
}
void remove (int data,bstree*&t)
{
if (t==NULL)
cout <<"tree is empty";
if (data<t->data)
remove(data,t->left);
else
if(data>t->data)
remove(data,t->right);
else
{
if (t->left!=NULL&&t->right!=NULL)
{ t->data=find_min(t->right);
remove(data,t->right);}
else
{
bstree*temp=t;
t=(t->left!=NULL)?t->left:t->right;
delete temp;
}
}
}
void postorder(bstree*t)
{
if (t!=NULL)
{
postorder(t->left);
postorder(t->right);
cout<<t->data;
}
}
void main()
{
creat();
int element;
int ch;
while(ch!=0)
{
cout <<"enter 1-insert 2-findmin 3find element 4remove 5print ";
cin>>ch;
if(ch==1)
{
cout<<"enter element";
cin>>element;
insert(element,root);
}
if (ch ==2)
find_min(root);
if(ch==3)
{
cout<<"enter element";
cin>>element;
find_element( element,root);
}
if (ch==4)
{cin>>element;
remove(element ,root);
}
if (ch==5)
{postorder(root);
}
}
}