// bintree.h P. Conrad CISC220 06J 
// simple binary tree class

#ifndef BINTREE_H
#define BINTREE_H

#include <iostream>
using std::ostream;

class BinTree
{
 public:
  BinTree(int theData);
  BinTree(int theData, BinTree *theLeft, BinTree *theRight);

  BinTree(const BinTree & orig);
  BinTree & operator =(const BinTree &right);
  ~BinTree();

  void inOrder(ostream & out) const;
  void preOrder(ostream & out) const;
  void postOrder(ostream & out) const;

  void print(ostream & out ) const; // preOrder with ( )

 private:
  // data members
  int data;
  BinTree *left;
  BinTree *right;

  // private member functions

  void deepCopy(const BinTree &src);
  void cleanup();


};

ostream & operator << (ostream & right, const BinTree & left);

#endif



