static void Main(string[] args) { BinaryTree binaryTree = new BinaryTree(); Random random = new Random(); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine("Случайное дерево"); for (int i = 0; i < 35; i++) { binaryTree.Add(random.Next(-50, 150)); } bool continue_working = true; binaryTree.PrintTree(); do { Console.WriteLine("\n1) Добавить элемент \n2) Найти элемент \n3) Удалить элемент \n4) Высота узла \n5) Глубина узла \n6) Уровень узла \n7) Перейти \n8) Отобразить \n9) Задача \nR) Обновить дерево \nC) Очистить дерево \n0) Выход\n"); ConsoleKey response; do { response = Console.ReadKey(true).Key; }while (response != ConsoleKey.D1 && response != ConsoleKey.D2 && response != ConsoleKey.D3 && response != ConsoleKey.D4 && response != ConsoleKey.D5 && response != ConsoleKey.D6 && response != ConsoleKey.D7 && response != ConsoleKey.D8 && response != ConsoleKey.D9 && response != ConsoleKey.D0 && response != ConsoleKey.R && response != ConsoleKey.C); int value = 0; switch (response) { case ConsoleKey.D1: do { Console.Write("Введите элемент: "); } while (!int.TryParse(Console.ReadLine(), out value)); binaryTree.Add(value); break; case ConsoleKey.D2: Console.Write("Ищем: "); while (!int.TryParse(Console.ReadLine(), out value)) { ; } Node found = binaryTree.Find(value); if (found == null) { Console.WriteLine("Элемент не найден"); } else { Console.WriteLine("Найден"); } break; case ConsoleKey.D3: Console.WriteLine("1) Справа \n2) Слева"); do { response = Console.ReadKey(true).Key; }while (response != ConsoleKey.D1 && response != ConsoleKey.D2); Console.Write("Удалить: "); while (!int.TryParse(Console.ReadLine(), out value)) { ; } if (response == ConsoleKey.D1) { binaryTree.Delete(value, true); } else { binaryTree.Delete(value, false); } binaryTree.PrintTree(); break; case ConsoleKey.D4: Console.Write("Высота узла, выберите узел (значение): "); while (!int.TryParse(Console.ReadLine(), out value)) { ; } int height = binaryTree.GetHeight(value); if (height != -1) { Console.WriteLine("Высота: " + height); } break; case ConsoleKey.D5: Console.Write("Глубина узла, выберите узел (значение): "); while (!int.TryParse(Console.ReadLine(), out value)) { ; } int depth = binaryTree.GetDepth(value); if (depth != -1) { Console.WriteLine("Глубина: " + depth); } break; case ConsoleKey.D6: Console.Write("Уровень узла, выберите узел (значение): "); while (!int.TryParse(Console.ReadLine(), out value)) { ; } int level = binaryTree.GetLevel(value); if (level != -1) { Console.WriteLine("Уровень: " + level); } break; case ConsoleKey.D7: Console.WriteLine("1)Прямой\n2)Обратный\n3)Симметричный"); do { response = Console.ReadKey(true).Key; }while (response != ConsoleKey.D1 && response != ConsoleKey.D2 && response != ConsoleKey.D3); Console.WriteLine(); if (response == ConsoleKey.D1) { binaryTree.Print(1); } else if (response == ConsoleKey.D2) { binaryTree.Print(2); } else { binaryTree.Print(3); } break; case ConsoleKey.D8: binaryTree.PrintTree(); break; case ConsoleKey.D9: Console.WriteLine("Найти и удалить (правым удалением) среднюю по значению вершину из вершин дерева, у которых количество потомков в левом поддереве не равно количеству потомков в правом поддереве. Выполнить прямой (левый) обход полученного дерева.\n"); binaryTree.Task(); break; case ConsoleKey.R: Console.Write("Размер дерева:"); while (!int.TryParse(Console.ReadLine(), out value)) { ; } if (value <= 0) { Console.WriteLine("Неверный размер дерева"); break; } binaryTree = new BinaryTree(); for (int i = 0; i < value; i++) { binaryTree.Add(random.Next(-150, 150)); } Console.WriteLine("Дерево обновлено"); break; case ConsoleKey.C: binaryTree = new BinaryTree(); Console.WriteLine("Дерево очищено"); break; case ConsoleKey.D0: continue_working = false; break; } } while (continue_working); Console.ReadKey(true); }