implimentation of BINARY SEARCH TREE

// BINARY SEARCH TREE
#include
#include
class btree
{
private:
struct btreenode
{
btreenode *leftchild;
int data;
btreenode *rightchild;
}*root;
public:
btree();
void buildtree(int num);
static void insert(btreenode **sr,int num);
void traverse();
static void inorder(btreenode *sr);
static void preorder(btreenode *sr);
static void postorder(btreenode *sr);
static void del(btreenode *sr);
~btree();
};
btree::btree()
{
root=NULL;
}
void btree::buildtree(int num)
{
insert(&root,num);
}
void btree::insert(btreenode **sr,int num)
{
if(*sr==NULL)
{
*sr=new btreenode;
(*sr)->leftchild=NULL;
(*sr)->data=num;
(*sr)->rightchild=NULL;

return;
}
else
{
if(num<(*sr)->data)insert(&((*sr)->leftchild),num);
else
insert(&((*sr)->rightchild),num);
}
return;
}
void btree::traverse()
{
cout<<"\n lnorder traverse";
inorder(root);
cout<<"\n Preorder traverse";
preorder(root);
cout<<"\n Postorder traverse";
postorder(root);
}
void btree::inorder(btreenode *sr)
{
if(sr!=NULL)
{
inorder(sr->leftchild);
cout<<"\t"<data;
inorder(sr->rightchild);
}
else
return;
}
void btree::preorder(btreenode *sr)
{
if(sr!=NULL)
{
cout<<"\t"<data;
preorder(sr->leftchild);
preorder(sr->rightchild);
}
else
return;
}
void btree::postorder(btreenode *sr)
{
if(sr!=NULL)
{
postorder(sr->leftchild);
postorder(sr->rightchild);
cout<<"\t"<data;
}
else
return;
}
btree::~btree()
{
del(root);
}
void btree::del(btreenode *sr)
{
if(sr!=NULL)
{
del(sr->leftchild);
del(sr->rightchild);
}
delete sr;
}
void main()
{
clrscr();
btree bt;
int req,i=1,num;
cout<<"specify the number of items to be insterted";
cin>>req;
while(i++<=req)
{
cout<<"enter the data";
cin>>num;
bt.buildtree(num);
}
bt.traverse();
getch();
}

Comments