BinaryNode *right;
BinaryNode():element(0),left(NULL),left(NULL){}
BinaryNode(const Comparable &theElement,BinaryNode *It,BinaryNode *rt)
: element(theElement),left(It),right(rt){}
}BN;
private:
BinaryNode *root;
void insert( const Comparable & x,BinaryNode * & t ) const;
void remove( const Comparable & x,BinaryNode * & t ) const;
BinaryNode * findMin( BinaryNode *t ) const;
BinaryNode * findMax( BinaryNode *t ) const;
bool contains( const Comparable & x, BinaryNode *t ) const;
void makeEmpty( BinaryNode * & t );
void printTree( BinaryNode * t,ostream &) const;
BinaryNode * clone( BinaryNode * t) const;
};
template<typename Comparable>
BinarySearchTree<Comparable>::BinarySearchTree(){
root=NULL;
}
template<typename Comparable>
bool BinarySearchTree<Comparable>::isEmpty()const
{
return root==NULL;
}