ADT Definition for a binary tree.
•	Look at binary.cpp for the use of the binary tree ADT
•	Check the output in binary.out
•	The function ct is used to illustrate how one can pass a function
•	Btnode2.h has the definition of the definition of BinaryTreeNode
•	Three different overloadings of the constructor
•	Data members are similar to the doubly linked list
•	Binary.h defines the BinaryTree class
•	BinaryTree() - constructor
•	 ~BinaryTree() - destructor 
•	call to the function Delete is appropriate here
•	The function Delete passes the function Free to PostOrder. Function Free deletes the node.
•	bool IsEmpty() const  
•	check if root is null
•	bool Root(T& x) const x will contain root item
•	void MakeTree(const T& element,
•	           BinaryTree<T>& left, BinaryTree<T>& right);
•	A binary tree needs to be built bottom up in absence of a criterion
•	We will look at the code in the next class
•	      void BreakTree(T& element, BinaryTree<T>& left,
•	                    BinaryTree<T>& right);
•	Opposite of Make tree
•	We will look at the code in the next class
•	void PreOrder(void(*Visit)(BinaryTreeNode<T> *u))
•	void InOrder(void(*Visit)(BinaryTreeNode<T> *u))
•	void PostOrder(void(*Visit)(BinaryTreeNode<T> *u))
•	void LevelOrder(void(*Visit)(BinaryTreeNode<T> *u));
•	All of these functions call another private function that does recursive computation
•	Same call to recursive function is necessary to determine Height
•	Size calls one of the traversals and bumps up a global variable called _count at each node.