// Justin C. Miller
// University of Wisconsin Oshkosh
// Made for: http://www.geocities.com/neonprimetime.geo/index.html
// Date: 2001
// Borland Builder 4.0
#ifndef BINARYT_H
#define BINARYT_H
typedef enum{left, right} Child ;
// forward references
template class BinaryTree ;
template class BST ;
template
class BNode
{
friend class BinaryTree ;
friend class BST ;
protected:
T data ;
BNode * prnt ;
BNode * lchild ;
BNode * rchild ;
public:
BNode() {}
BNode( const T & elm) : data(elm), prnt(0), lchild(0), rchild(0) {}
};
template < class T>
class BinaryTree
{
protected:
BNode * root ;
int Height ( BNode * t)const ;
void PreOrder(void (*Visit)(BNode * u), BNode * t) ;
void InOrder(void (*Visit)(BNode * u), BNode * t) ;
void PostOrder(void (*Visit)(BNode * u), BNode * t) ;
static void Output (BNode * p) ;
public:
BinaryTree() : root(0) {}
BinaryTree( const T & elm)
{
root = new BNode ;
root->data = elm ;
root->prnt = 0 ;
root->lchild = 0 ;
root->rchild = 0 ;
}
virtual ~BinaryTree() {}
bool InsertLeaf( const T & elm, BNode * prnt, Child lr) ;
bool Root( T & elm) ;
T GetData (BNode * t) ;
int Height() const { return Height(root) ;}
bool IsEmpty() const
{return ((root) ? false : true) ;}
void PreOrder(void (*Visit)(BNode * u))
{PreOrder(Visit, root) ;}
void InOrder(void (*Visit)(BNode * u))
{InOrder(Visit, root);}
void PostOrder(void (*Visit)(BNode * u))
{PostOrder(Visit, root) ;}
void InOutput() ;
};
#endif
               (
geocities.com/neonprimetime.geo/cpp)                   (
geocities.com/neonprimetime.geo)