Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2014, 23:04   #1
stx
 
Регистрация: 20.01.2009
Сообщений: 6
По умолчанию (C#) Заполнение дерева с клавиатуры и вывод в консоль

Нужно получить значения узла с клавиатуры и вывести дерево в упорядоченном виде.
Пробую сохранять значения узла в массиве, а потом присваивать значения элементов массива каждому узлу через цикл.
Далее вывожу дерево на консоль.

Когда создаю дерево вручную, то всё получается.
Присвоение значений через массив что-то не получается.

Код:
class Tree
        {
            // класс узел
            class Node
            {
                public Node left;
                public Node right;
                public int value;
                public Node(Node left, Node right, int value)
                {
                    this.left = left;
                    this.right = right;
                    this.value = value;
                }
            }
 
            // корень
            private Node _root;
            public Tree()
            {
                _root = null;
            }
 
            //создаем узел
            public void Add(int value)
            {
                _add(ref _root, value);
            }
 
            private void _add(ref Node node, int value)
            {
                if (node == null)
                {
                    node = new Node(null, null, value);
                }
                else
                {
                    if (node.value >= value)
                    {
                        _add(ref node.left, value);
                    }
                    else
                    {
                        _add(ref node.right, value);
                    }
                }
            }
 
            // вывод в консоль
            public void Print()
            {
                _print(_root);
            }
 
            private void _print(Node node)
            {
                if (node == null) return;
                _print(node.left);
                Console.WriteLine(node.value);
                _print(node.right);
            }
 
        }
    
}
Использование в программе:
Код:
static void Main(string[] args)
        {
            // создаем дерево
            Tree t = new Tree();
 
 
            int n = 6;
            int[] strs = new int[n];
            for (int i = 0; i < n; i++)
            {
                //заполняем массив с клавиатуры
                strs[i] = Console.Read();
            }
            for (int i = 0; i < n; i++)
            {
                t.Add(strs[i]);
            }
            // распечатываю упорядоченное дерево
            t.Print();
Без цикла всё работает:
Код:
static void Main(string[] args)
        {
            // создаем дерево
            Tree t = new Tree();
 
                t.Add(1);
                t.Add(2);
                t.Add(6);
                t.Add(17);
                t.Add(21);
                t.Add(3);
                t.Add(8);
           
            t.Print();
        }
stx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение бинарного дерева Kallis Общие вопросы C/C++ 0 17.12.2013 03:56
Создание и заполнение B+ дерева (Paskal) Bloodwhip Помощь студентам 2 30.07.2012 17:12
Заполнение бинарного дерева из файла Danil_94 Общие вопросы Delphi 0 08.06.2012 08:13
C++. Заполнение дерева выражения. Colder M Помощь студентам 2 08.06.2011 07:27
Заполнение дерева 29AHexNumber Общие вопросы C/C++ 0 08.06.2010 10:49