/// <summary>
        /// Test removing the root of the tree
        /// </summary>
        static void TestRemoveRoot()
        {
            Tree <int>     tree  = new Tree <int>(4);
            TreeNode <int> node5 = new TreeNode <int>(5, tree.Root);

            tree.AddNode(node5);
            TreeNode <int> node6 = new TreeNode <int>(6, node5);

            tree.AddNode(node6);
            TreeNode <int> node7 = new TreeNode <int>(7, node5);

            tree.AddNode(node7);
            TreeNode <int> node8 = new TreeNode <int>(8, node6);

            tree.AddNode(node8);
            bool success = tree.RemoveNode(tree.Root);

            Console.Write("TestRemoveRoot: ");
            string treeString = tree.ToString();

            if (treeString.Equals("Root: null") &&
                tree.Count == 0 &&
                success)
            {
                Console.WriteLine("Passed");
            }
            else
            {
                Console.WriteLine("FAILED!!! Expected: Root: null, 2," +
                                  " and true Actual: " + treeString + " and " +
                                  tree.Count + " and " + success);
            }
        }
        /// <summary>
        /// Test removing a node that's not in the tree
        /// </summary>
        static void TestRemoveNodeNotInTree()
        {
            Tree <int>     tree  = new Tree <int>(4);
            TreeNode <int> node5 = new TreeNode <int>(5, tree.Root);

            tree.AddNode(node5);
            TreeNode <int> node6   = new TreeNode <int>(6, node5);
            bool           success = tree.RemoveNode(node6);

            Console.Write("TestRemoveNodeNotInTree: ");
            string TreeString = tree.ToString();

            if (TreeString.Equals("Root: 4 [Node Value: 4 Parent: null Children: 5 ]," +
                                  "[Node Value: 5 Parent: 4 Children: ]") &&
                tree.Count == 2 &&
                !success)
            {
                Console.WriteLine("Passed");
            }
            else
            {
                Console.WriteLine("FAILED!!! Expected: Root: 4 " +
                                  "[Node Value: 4 Parent: null Children: 5 ]," +
                                  "[Node Value: 5 Parent: 4 Children: ], 2, and false Actual: " +
                                  TreeString +
                                  ", " + tree.Count + " and " +
                                  success);
            }
        }
        /// <summary>
        /// Test removing a branch node from the tree
        /// </summary>
        static void TestRemoveBranchNode()
        {
            Tree <int>     tree  = new Tree <int>(4);
            TreeNode <int> node5 = new TreeNode <int>(5, tree.Root);

            tree.AddNode(node5);
            TreeNode <int> node6 = new TreeNode <int>(6, node5);

            tree.AddNode(node6);
            TreeNode <int> node7 = new TreeNode <int>(7, node5);

            tree.AddNode(node7);
            TreeNode <int> node8 = new TreeNode <int>(8, node6);

            tree.AddNode(node8);
            bool success = tree.RemoveNode(node5);

            Console.Write("TestRemoveBranchNode: ");
            string treeString = tree.ToString();

            if (treeString.Equals("Root: 4 [Node Value: 4 Parent: null Children: ]") &&
                tree.Count == 1 &&
                success)
            {
                Console.WriteLine("Passed");
            }
            else
            {
                Console.WriteLine("FAILED!!! Expected: " +
                                  "Root: 4 [Node Value: 4 Children: 5 ], " +
                                  "2, and true Actual: " +
                                  treeString +
                                  ", " + tree.Count + " and " +
                                  success);
            }
        }