// рекурсивный обход public static void RecursiveTraversal(BinaryTree.Node <int> root) { if (root == null) { return; } Console.Write($"{root.Data} "); RecursiveTraversal(root.Left); RecursiveTraversal(root.Right); }
// симметричный обход public static void SymmetricalTraversal(BinaryTree.Node <int> root) { if (root == null) { return; } SymmetricalTraversal(root.Left); Console.Write($"{root.Data} "); SymmetricalTraversal(root.Right); }
/* Переписать программу, реализующее двоичное дерево поиска. * а) Добавить в него обход дерева различными способами; * б) Реализовать поиск в двоичном дереве поиска; * */ private static void Task2() { /*Результат: * 12 * / \ * 5 18 * / \ / \ * 2 9 15 19 * / \ * 13 17 * */ BinaryTree tree = new BinaryTree(12); tree.Insert(5); tree.Insert(18); tree.Insert(2); tree.Insert(9); tree.Insert(15); tree.Insert(19); tree.Insert(13); tree.Insert(17); tree.Print(); // 12 (5 (2 9 )18 (15 (13 17 )19 )) Console.WriteLine("\nРекурсивный обход"); RecursiveTraversal(tree.Root); Console.WriteLine("\nСимметричный обход"); SymmetricalTraversal(tree.Root); Console.WriteLine("\nОбратный обход"); ReverceTraversal(tree.Root); Console.WriteLine("\nПоиск узла"); BinaryTree.Node <int> node = tree.Find(15); tree.Print(node); }