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(); }