Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Redsilver
0 / 0 / 2
Регистрация: 06.10.2015
Сообщений: 19
#1

Работа с деревьями - C#

20.11.2016, 16:16. Просмотров 546. Ответов 4
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста.
1. Описать функцию которая:
a) печатает узлы непустого дерева при обходе слева направо;
б) удаляет все письма выходного дерева и печатает модифицированное дерево.

2. На стоянке стоят автомобили со следующими номерами: 1212, 3451, 7694, 4512, 4352, 8732, 7326, 2350, 4536, 2387, 5746, 6776, 4316, 1324. Для статистики необходимо составить список автомобилей с такими номерами, сумма первых двух цифр которых равна сумме двух последних цифр, так чтобы каждый следующий номер был меньше предыдущего.
http://www.cyberforum.ru/csharp-beginners/thread806768.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 16:16
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с деревьями (C#):

Работа с деревьями и строками: Нужно реализовать метод поиска
Добрый день,есть такой вопрос: Есть класс Treenode со структурой class...

Как разобраться с деревьями в C#
Начал изучать C#, знания нулевые. Нужно создать дерево и определить, сколько...

Библиотеки для работы с деревьями
Есть ли какие-нибудь библиотеки для работы с TreeNode (без визуализации)....

Подскажите,как правильно работать с деревьями
Есть такое задание: Реализовать создание красно-черного дерева Разработать...

Составить описание класса для работы с бинарными деревьями поиска и реализовать основные операции
Составить описание класса для работы с бинарными деревьями поиска (BST)....

4
John999
223 / 106 / 79
Регистрация: 17.10.2016
Сообщений: 312
20.11.2016, 23:06 #2
Лучший ответ Сообщение было отмечено Redsilver как решение

Решение

2.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 int[] arr = { 1212, 3451, 7694, 4512, 4352, 8732, 7326, 2350, 4536, 2387, 5746, 6776, 4316, 1324};
        var set = new SortedSet<int>();
        foreach (int item in arr)
        {
            int tmp = item;
            int a = tmp % 10;
            tmp /= 10;
            a += tmp % 10;
            tmp /= 10;
            int b =  tmp % 10;
            tmp /= 10;
            b += tmp % 10;
            if (a == b)
                set.Add(item);
        }
        foreach (int item in set.Reverse())
            Console.WriteLine(item);
2
Redsilver
0 / 0 / 2
Регистрация: 06.10.2015
Сообщений: 19
23.11.2016, 19:39  [ТС] #3
John999, Спасибо. А вы не знаете как сделать 1 пример?
0
John999
223 / 106 / 79
Регистрация: 17.10.2016
Сообщений: 312
23.11.2016, 22:28 #4
Цитата Сообщение от Redsilver Посмотреть сообщение
a) печатает узлы непустого дерева при обходе слева направо;
C#
1
2
3
4
5
6
7
8
9
10
 //   Симметричный обход
            public void InOrder(Node head)
            {
                if (head != null)
                {
                    InOrder(head.Left);
                    Console.Write("{0} ", head.Data);
                    InOrder(head.Right);
                }
            }
Добавлено через 1 минуту
Цитата Сообщение от Redsilver Посмотреть сообщение
б) удаляет все письма выходного дерева и печатает модифицированное дерево.
листья выходного дерева

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
       public Node RemoveLeafs(Node head)
            {
                if (head != null)
                {
                    if (head.Left == null && head.Right == null)
                    {
                        head = null;
                    }
                    else
                    {
                        head.Left = RemoveLeafs(head.Left);
                        head.Right = RemoveLeafs(head.Right);
                        Console.Write("{0} ", head.Data);
                    }
                }
                return head;
            }
тест :
Кликните здесь для просмотра всего текста
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  
        public class Node
        {
            public int Data;
            public Node Left, Right;
            public Node()
            {
                Data = 0;
                Left = null;
                Right = null;
            }
            public Node(int data)
            {
                Data = data;
                Left = null;
                Right = null;
            }
        }
 
        public class Tree
        {
            public Tree()
            {
                Head = null;
            }
            public Node Head;
            public void AddNode(int data)
            {
                Head = AddNode(Head, data);
            }
            public Node AddNode(Node head, int data)
            {
                if (head == null)
                {
                    head = new Node(data);
                }
                else
                {
                    if (data < head.Data)
                        head.Left = AddNode(head.Left, data);
                    else
                        head.Right = AddNode(head.Right, data);
                }
                return head;
            }
 
            //   Симметричный обход
            //  левое поддерево
            //  корень
            //  правое поддерево
 
            public void InOrder(Node head)
            {
                if (head != null)
                {
                    InOrder(head.Left);
                    Console.Write("{0} ", head.Data);
                    InOrder(head.Right);
                }
            }
 
            public void InOrder()
            {
                InOrder(Head);
            }
 
            public Node RemoveLeafs(Node head)
            {
                if (head != null)
                {
                    if (head.Left == null && head.Right == null)
                    {
                        head = null;
                       // return null;
                    }
                    else
                    {
                        head.Left = RemoveLeafs(head.Left);
                        head.Right = RemoveLeafs(head.Right);
                        Console.Write("{0} ", head.Data);
                    }
                }
                return head;
            }
 
 
            public void RemoveLeafs()
            {
                RemoveLeafs(Head);
            }
 
 
        }
        public static void Main(string[] args)
        {
            Tree tree = new Tree();
            Random rand = new Random();
 
            for (int i = 0; i < 10; i++)
            {
                tree.AddNode(rand.Next(30));
            }
 
            tree.InOrder();
 
            Console.WriteLine();
 
            tree.RemoveLeafs();
 
            Console.ReadKey(true);
        }
1
Redsilver
0 / 0 / 2
Регистрация: 06.10.2015
Сообщений: 19
25.11.2016, 11:39  [ТС] #5
John999, Спасибо.
0
25.11.2016, 11:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2016, 11:39
Привет! Вот еще темы с решениями:

Работа с деревьями
Здравствуйте! Можете подсказать класс, с помощью которого можно работать с...

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с...

Работа с INI: некорректная работа пользовательской функции
Ранее нашел код для работы с ini-файлами: public class INI { ...

Работа с деревьями
RECORD * tree(int k) { RECORD *newnode; int nl,nr;//левое и правое поддерево...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru