Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5 / 5 / 1
Регистрация: 08.04.2014
Сообщений: 47

Добавление элементов в дерево и просмотр получившегося дерева на C#

08.04.2014, 19:35. Показов 2372. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеет ли место быть такой реализации дерева? Может есть другие способы реализации, куда более эффективнее.
Код переписал с языка С++
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
 
namespace Tree
{
    class Node
    {
        public int key;
        public Node left;
        public Node right;
    }
 
    static class Tree
    {
        public static void Insert(ref Node tree, int key)
        {
            if (tree == null)   
            {
                tree = new Node();
                tree.key = key;
                tree.left = null;
                tree.right = null;
                return;
            }
 
            if (key < tree.key)
                Insert(ref tree.left, key);
            else
                Insert(ref tree.right, key);
        }
 
        public static void Print(Node tree)
        {
            if (tree == null) return;
            Print(tree.left);
            Console.WriteLine(tree.key);
            Print(tree.right);
        }
    }
 
    class Program
    {
        static void Main()
        {
            Node PNode = null;
 
            int[] a = new int[] { 1, 2, 13, 4, 5 };
 
            for (int i = 0; i < a.Length; i++)
            {
                Tree.Insert(ref PNode, a[i]);
            }
 
            Tree.Print(PNode);
 
            Console.ReadKey();
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.04.2014, 19:35
Ответы с готовыми решениями:

Бинарное дерево - Просмотр дерева в следующем порядке: узел, левая ветвь, правая ветвь
3. Разработать программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение...

Бинарное дерево, расчёт суммы элементов дерева
Задание: Программа должна обрабатывать бинарное дерево, содержащее целые числа. Дополнительные функции: расчёт суммы элементов дерева.

Удаление элементов из бинарного дерева (не дерево поиска)
Задание заключается в создании бинарного дерева, из букв введенной строки, обходе дерева и удалении согласных букв из дерева. проблема...

1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
09.04.2014, 12:07
Rom@rio, вполне хороший пример. только программа на с была процедурной, а C# - чисто объектно-ориентированный:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
class Node<T>
{
        public T key;
        public Node<T> left;
        public Node<T> right;
     public Node<T>(T key)
     {
           this.key=key; left=null; right=null;
     }
}
class Tree<T> 
{
    Node<T> root= new Node<T>();
    public Tree<T>()
    {
    }
//доступный простой метод для добавления
    public void Insert<T>(T key)
    {
          this.Insert(root, key);   
    } 
//скрытый метод, который работает с деревом
    private void Insert<T>(Node n, T key)
    {
            if(n==null) n=new Node<T>(key);
            else if(n.Key>key) this.Insert(n.left, key);
            else this.Insert(n.right, key);
    }
    public Print()
    {
          this.Print(root);
    }
    private Print<T>(Node<T> tree)
    {
            if (tree == null) return;
            Print(tree.left);
            Console.WriteLine(tree.key);
            Print(tree.right);    
    }
}
class Program
    {
        static void Main()
        {
 //мы создаем объект-дерево и не задумываемся более ни о чем
            Tree<int> ftree = new Tree<int>();
 
            int[] a = new int[] { 1, 2, 13, 4, 5 };
 
            for (int i = 0; i < a.Length; i++)
            {
                ftree.Insert(a[i]);
            }
 
            ftree.Print();
 
            Console.ReadKey();
        }
    }
Добавлено через 3 минуты
P.S. сделал класс универсальным, чтоб он мог работать с любым типом данных
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2014, 12:07
Помогаю со студенческими работами здесь

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением)
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим списком: добавление/удаление элементов в...

Бинарное дерево. Поиск, вывод и удаление элементов из дерева
Задача следующая: Разработать программу, которая содержит информацию о реестре жилых помещений (купля/продажа) риэлторской фирмы. ...

Построить бинарное дерево из целочисленных элементов. Найти наименьший элемент дерева
Построить бинарное дерево из целочисленных элементов. Найти наименьший элемент дерева. &lt;--- вот условие задачи. Буду очень...

Функция, которая строит новое дерево из элементов данного дерева, которые оканчиваются на 7
Напишите функцию, которая по заданному дереву строит новое дерево только тех элементов данного дерева, которые оканчиваются на 7. ...

Добавление элементов бинарное дерево
Всем добрый день, не выручит кто нибудь алгоритмом который заполняет двоичное дерево поиска


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru