public static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            BinarySearchTree <int> tree = new BinarySearchTree <int>();

            tree.Root = new BinaryTreeNode <int>()
            {
                Data = 100
            };
            tree.Root.Left = new BinaryTreeNode <int>()
            {
                Data = 50, Parent = tree.Root
            };
            tree.Root.Right = new BinaryTreeNode <int>()
            {
                Data = 150, Parent = tree.Root
            };
            tree.Count = 3;
            VisualizeTree(tree, "The BST with three nodes (50, 100, 150):");

            tree.Add(75);
            tree.Add(125);
            VisualizeTree(tree, "The BST after adding two nodes (75, 125):");

            tree.Add(25);
            tree.Add(175);
            tree.Add(90);
            tree.Add(110);
            tree.Add(135);
            VisualizeTree(tree, "The BST after adding five nodes (25, 175, 90, 110, 135):");

            tree.Remove(25);
            VisualizeTree(tree, "The BST after removing the node 25:");

            tree.Remove(50);
            VisualizeTree(tree, "The BST after removing the node 50:");

            tree.Remove(100);
            VisualizeTree(tree, "The BST after removing the node 100:");

            Console.Write("Pre-order traversal:\t");
            Console.Write(string.Join(", ", tree.Traverse(TraversalEnum.PREORDER).Select(n => n.Data)));

            Console.Write("\nIn-order traversal:\t");
            Console.Write(string.Join(", ", tree.Traverse(TraversalEnum.INORDER).Select(n => n.Data)));

            Console.Write("\nPost-order traversal:\t");
            Console.Write(string.Join(", ", tree.Traverse(TraversalEnum.POSTORDER).Select(n => n.Data)));

            tree.Remove(90);
            VisualizeTree(tree, "---");

            tree.Remove(75);
            VisualizeTree(tree, "---");

            tree.Remove(125);
            VisualizeTree(tree, "---");

            tree.Remove(110);
            VisualizeTree(tree, "---");

            tree.Remove(175);
            VisualizeTree(tree, "---");

            tree.Remove(135);
            VisualizeTree(tree, "---");

            tree.Remove(150);
            VisualizeTree(tree, "---");
            Console.ReadLine();
        }