template class binarysearchtree publicbinarysearchtree)binarysearchtreeconst binarysearchtree rhs )binarysearchtreebinarysearchtree &rhs )~binarysearchtree)const comparable findminconstconst comparable findmaxconstbool containsconst comparable constbool isemptyconstvoid printtreeostream out cout constvoid makeempty)void insertconst comparable )void insertcomparable & )void removeconst comparable )binarysearchtree operator=const binarysearchtree rhs )binarysearchtree operator=binarysearchtree &rhs )privatestruct binarynode comparable elementbinarynode *leftbinarynode *rightbinarynodeconst comparable theelementbinarynode *ltbinarynode *rt elementtheelement }leftlt }rightrt binarynodecomparable &theelementbinarynode *ltbinarynode *rt elementstd::movetheelement }leftlt }rightrt }binarynode *rootvoid insertconst comparable xbinarynode )void insertcomparable &xbinarynode )void removeconst comparable xbinarynode )binarynode findminbinarynode * constbinarynode findmaxbinarynode * constbool containsconst comparable xbinarynode * constvoid makeemptybinarynode )void printtreebinarynode *tostream out constbinarynode clonebinarynode * const}figure binary search tree class skeleton