コード例 #1
0
 // рекурсивный обход
 public static void RecursiveTraversal(BinaryTree.Node <int> root)
 {
     if (root == null)
     {
         return;
     }
     Console.Write($"{root.Data} ");
     RecursiveTraversal(root.Left);
     RecursiveTraversal(root.Right);
 }
コード例 #2
0
 // симметричный обход
 public static void SymmetricalTraversal(BinaryTree.Node <int> root)
 {
     if (root == null)
     {
         return;
     }
     SymmetricalTraversal(root.Left);
     Console.Write($"{root.Data} ");
     SymmetricalTraversal(root.Right);
 }
コード例 #3
0
        /* Переписать программу, реализующее двоичное дерево поиска.
         * а) Добавить в него обход дерева различными способами;
         * б) Реализовать поиск в двоичном дереве поиска;
         * */
        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);
        }