/***********************************************************************/
/* file bst.h                                                          */
/* contains the class definition of class bst.                         */
/***********************************************************************/

#ifndef BST_H
#define BST_H

#include "base_bst.h"

/***********************************************************************/
/* class definition of class bst. bst is a binary search tree          */
/***********************************************************************/

template <class type>
class bst: public base_bst<type>
{
   friend class bst_iterator<type>;              // bst_iterator may access
                                                 // private data fields
public:
   bst() { }                                     // constructor
   bst(const bst<type>& tree):                   // copy constructor
     base_bst<type>(tree) { }
   const bst<type>& operator=(const bst<type>&); // copy operator
   virtual ~bst() { }                            // destructor
   virtual bst_item<type> *add(const type&);     // adds item to bst
   virtual bst_item<type> *search(const type&);  // searches item in bst
};

#include "bst.cc"                                // because of templates

#endif