•	Maketree
•	Calls the constructor of BinaryTreeNode with three parameters
•	Note that the parameters left and right are made empty, because they are now part of the new tree.
•	A call to Delete may be appropriate before we start doing anything in this function
•	Breaktree
•	element gets the value of root->data
•	left->root gets the value of root->leftchild
•	Note left doesn’t get the value of root->leftchild, leftchild is of the type BinaryTreeNode and left is of the type BinaryTree
•	same for right->root
•	The member functions cannot be written recursively
•	for example we CANNOT have preorder function as follows:
template <class T>
void BinaryTree<T>::PreOrder(visit)
{
	if(root)
	{
		visit(root);
		root->leftchild.Preorder(visit);
		root->rightchild.Preorder(visit);
	}
}
•	root->leftchild.Preorder(visit); is not possible because root->leftchild is not a BinaryTree.
•	That is why we add the private functions such as PreOrder with two parameters.
•	The private functions can be recursive because instead of root we pass root->leftchild  and root->rightchild to the recursive calls.