Beispiel #1
0
        static void Main(string[] args)
        {
            // Создание дерева
            Console.WriteLine("Введите количество вершин дерева");
            int     size = ReadCheak.ReadPositve();
            BinTree Tree = new BinTree();

            Tree = BinTree.ProdIdealTree(size, Tree);
            // Вывод дерева
            Console.WriteLine("Сформированый список: ");
            BinTree.ShowTree(Tree, size);

            // Добавление вершин
            Console.WriteLine("Добавление элементов:");
            Console.WriteLine("Введите количество добавляемых вершин");
            int NumAdd = ReadCheak.ReadPositve();

            for (int i = 1; i <= NumAdd; i++)
            {
                Tree = BinTree.AddElement(Tree);
                Console.WriteLine("Сформированый список: ");
                BinTree.ShowTree(Tree, size);
            }
            Console.ReadLine();
        }
Beispiel #2
0
        /// <summary>
        /// Создание сбалансированного дерева
        /// </summary>
        /// <param name="size">Количество вершин</param>
        /// <param name="tree">Дерево</param>
        /// <returns>Сбалансированное дерево</returns>
        public static BinTree ProdIdealTree(int size, BinTree tree)
        {
            // Заполнение массива
            arr = new int[size];
            for (int i = 0; i < size; i++)
            {
                Console.WriteLine("Введите {0}й элемент", i + 1);
                arr[i] = ReadCheak.ReadInt();
            }
            int j = 0;

            // Создание сбалансированного дерева по массиву вершин
            return(IdealTree(size, tree, ref j, arr));
        }
Beispiel #3
0
        /// <summary>
        /// Добавление элемента и балансировка дерева
        /// </summary>
        /// <param name="tree">Дерево</param>
        /// <returns>Сбалансированное дерево с добавленной вершиной</returns>
        public static BinTree AddElement(BinTree tree)
        {
            // Копирование элементов дерева
            int[] CopyArr = new int[arr.Length];
            for (int i = 0; i < arr.Length; i++)
            {
                CopyArr[i] = arr[i];
            }
            // Увеличение числа вершин в массиве
            arr = new int[CopyArr.Length + 1];
            // Возвращение элементов в массив
            for (int i = 0; i < CopyArr.Length; i++)
            {
                arr[i] = CopyArr[i];
            }
            // Добавление вершины
            Console.WriteLine("Введите элемент");
            arr[arr.Length - 1] = ReadCheak.ReadInt();
            int j = 0;

            // Сбалансирование дерева
            return(IdealTree(arr.Length, tree, ref j, arr));
        }