Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 5
1

Алгоритм прямого и обратного прохода дерева

17.08.2017, 19:31. Показов 1542. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно реализовать алгоритмы прямого и обратного прохода дерева на с#,никак не получается.Вот мой последний код
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
 public IEnumerator<T> PostOrderTraversal()
        {
 
            if (_head != null) { 
            Stack<BinaryTreeNode<T>> stack = new Stack<BinaryTreeNode<T>>();
            BinaryTreeNode<T> current = _head;
         
            bool goLeftNext = true;
 
                
                stack.Push(current);
 
                while (stack.Count > 0)
                {
                    
                    if (goLeftNext)
                    {
                               
 
                        while (current.Left != null)
                        {
                            
                            current = current.Left;
                            stack.Push(current);
                        }
                        
                    }
 
                  
 
                    if (current.Right != null)
                    {
 
                        current = current.Right;
                        stack.Push(current);
                                                         
                        goLeftNext = true;
                    }
                    if(current.Left==null&&current.Right==null)
                    {
                       
                        yield return current.Value;
                        current = stack.Pop();
                        
                        goLeftNext = false;
                    }
                }
            }       
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.08.2017, 19:31
Ответы с готовыми решениями:

Алгоритм обратного распространения ошибки
Добрый день. Пытаюсь реализовать многослойный перцептрон и обучить его с помощью указанного...

Алгоритм распознания прямого участка замкнутой кривой
подскажите плз алгоритм или в каком направлении искать вот такая задача: источник данных есть...

Реализация прямого и обратного быстрого преобразования Фурье
Добрый день. Есть задание - Реализация простого и обратного быстрого преобразования Фурье (с...

Отладка программы Прямого и Обратного счета времени .
Доброго времени суток дорогие посетители форума . Стараюсь написать программу которая должна...

4
Модератор
Эксперт функциональных языков программирования
3079 / 2228 / 464
Регистрация: 26.03.2015
Сообщений: 8,662
18.08.2017, 18:10 2
Лучший ответ Сообщение было отмечено Alex007A как решение

Решение

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
public class Node<T>
{
    public T Value;
    public Node<T> Left;
    public Node<T> Right;
}
 
IEnumerable<T> preOrderTravers<T>(Node<T> root)
{
    if (root != null)
    {
        yield return root.Value;
        preOrderTravers(root.Left);
        preOrderTravers(root.Right);
    }
}
 
IEnumerable<T>  postOrderTravers<T>(Node<T> root)
{
    if (root != null)
    {
        postOrderTravers(root.Left);
        postOrderTravers(root.Right);
        yield return root.Value;
    }
}
Добавлено через 11 минут
Вот версия без рекурсии:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
IEnumerable<T> preOrderTravers<T>(Node<T> root)
{
    var stack = new Stack<Node<T>>();
    stack.Push(root);
    while (stack.Count > 0)
    {
        var current = stack.Pop();
        if (current != null)
        {
            yield return current.Value;
            stack.Push(current.Right);
            stack.Push(current.Left);
        }
    }
}
1
0 / 0 / 1
Регистрация: 17.07.2017
Сообщений: 3
22.08.2017, 15:51 3
Спасибо!! значит чтобы без рекурсии - без стэка никак?
0
Модератор
Эксперт функциональных языков программирования
3079 / 2228 / 464
Регистрация: 26.03.2015
Сообщений: 8,662
22.08.2017, 17:42 4
Цитата Сообщение от DANATJ Посмотреть сообщение
Спасибо!! значит чтобы без рекурсии - без стэка никак?
Так как рекурсия не хвостовая, то заменить её на цикл можно только с помощью стэка (или другой структуры данных для хранения состояний).
0
0 / 0 / 1
Регистрация: 17.07.2017
Сообщений: 3
22.08.2017, 18:21 5
Цитата Сообщение от Shamil1 Посмотреть сообщение
рекурсия не хвостовая
спасибо за ликбез!
0
22.08.2017, 18:21
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2017, 18:21
Помогаю со студенческими работами здесь

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

Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье
Нужна рабочая функция быстрого/прямого и обратного преобразования Фурье. В гугле много всего,...

Подпрограмма прямого обхода двоичного дерева
Помогите написать подпрограмму прямого обхода двоичного дерева

Написать подпрограмму прямого обхода двоичного дерева
Написать подпрограмму прямого обхода двоичного дерева.


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru