static void Main(string[] args) { BinaryTree tree = new BinaryTree(); int[] nodes = { 1, 12, 13, 2, 9, 6, 8, 4, 15 }; foreach (int num in nodes) { tree.AddNode(num); } // Tree building TreePrinter.PrintChildNodes(tree.RootNode); Console.ReadKey(); Console.Write('\b'); // Traversals Console.Write("Traversals:\n1)Preorder { "); tree.PreorderTraversal(); Console.Write("}\n2)Inorder { "); tree.InorderTraversal(); Console.Write("}\n3)Postorder { "); tree.PostorderTraversal(); Console.WriteLine("}\n"); Console.ReadKey(); Console.Write("\b"); // K-min element Console.Write("Finding of k-min element:\nEnter k = "); int k = 0; for (int i = 0; i < 1; i++) { try { k = int.Parse(Console.ReadLine()); if (k < 1 || k > nodes.Length) { throw new Exception(); } } catch (Exception) { Console.Write("k = "); i--; } } Console.WriteLine($"{k}-min element is {tree.FindMinimalNode(k)}\n"); Console.ReadKey(); Console.Write("\b"); // Tree balancing Console.WriteLine("Original tree balanced by rotations:"); tree.BalanceTree(); TreePrinter.PrintChildNodes(tree.RootNode); Console.ReadKey(); }
static void Main(string[] args) { BinaryTree binaryTree = new BinaryTree(); int[] numbersToAdd = new[] { 6, 4, 3, 2, 10, 1, 9 }; foreach (int number in numbersToAdd) { binaryTree.Add(number); } Console.WriteLine("Дерево:"); binaryTree.PrintTree(); Console.WriteLine("Возрастание:"); foreach (int number in binaryTree.AscendingSequence()) { Console.Write($"{number} "); } Console.WriteLine(); Console.WriteLine("Убывание:"); foreach (int number in binaryTree.DescendingSequence()) { Console.Write($"{number} "); } Console.WriteLine(); int k = 3; Console.WriteLine($"k-ый минимальный элемент: {binaryTree.FindKthMinimalElement(k).Value} (k = {k})"); BinaryTree binaryTree1 = new BinaryTree(); int[] numbersToAdd1 = new[] { 1, 2, 3, 4, 5, 6, 7 }; foreach (int number in numbersToAdd1) { binaryTree1.Add(number); } BinaryTree binaryTree2 = new BinaryTree(); int[] numbersToAdd2 = new[] { 9, 8, 14, 11, 15, 20, 21 }; foreach (int number in numbersToAdd2) { binaryTree2.Add(number); } BinaryTree binaryTree3 = new BinaryTree(); int[] numbersToAdd3 = new[] { 6, 7, 5, 3, 1, 4 }; foreach (int number in numbersToAdd3) { binaryTree3.Add(number); } binaryTree1.BalanceTree(); binaryTree2.BalanceTree(); binaryTree3.BalanceTree(); Console.WriteLine("Сбалансированное дерево 1:"); binaryTree1.PrintTree(); Console.WriteLine("Сбалансированное дерево 2:"); binaryTree2.PrintTree(); Console.WriteLine("Сбалансированное дерево 3:"); binaryTree3.PrintTree(); }