Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.02.2014
Сообщений: 36
1

Как можно совершить обход двоичного дерева нерекурсивно

07.08.2014, 00:12. Показов 585. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Хочу поинтересоваться: как можно совершить обход двоичного дерева нерекурсивно(!!!), желательно с примерами или полезными ссылками. Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2014, 00:12
Ответы с готовыми решениями:

Обход двоичного дерева по уровням
Доброго времени! Нужно реализовать нерекурсивный обход двоичного дерева поиска по уровням, я...

Помогите сделать обход двоичного дерева
Есть некий проект (большой, несколько файлов), где происходит процессы со списком (добавление,...

Не выводит обход двоичного дерева
Всем здравствуйте Странная ерунда происходит , не выводит дерево , при обходе , ошибки при...

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

4
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
07.08.2014, 05:21 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename T1, typename T2> void tree<T1, T2>::round() const {
    std::wcout << "\n";
    std::vector<node<T1, T2> const * const> stack;
 
    node<T1, T2> const * current = _root;
    while (true) {
        while (nullptr != current) {
            stack.push_back(current);
            current = current->left;
        }
 
        if (stack.empty()) {
            break;
        } else {
            current = stack.back();
            stack.pop_back();
 
            std::wcout << current->key << "\t";
 
            current = current->right;
        }
    }
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
07.08.2014, 09:36 3
Kukurudza, почему бы не использовать в качестве стека стек?
0
106 / 87 / 13
Регистрация: 29.08.2012
Сообщений: 539
07.08.2014, 09:42 4
salam, та пожалуйста
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
07.08.2014, 09:47 5
Хочу поинтересоваться: как можно совершить обход двоичного дерева нерекурсивно(!!!), желательно с примерами или полезными ссылками.
C++
1
2
3
4
for(node*current_node=root;current_node;current_node=current_node->next_node)
{
    //здесь что-то делаем с узлом дерева
}
И воскурить Кнута на тему прошитых деревьев.
0
07.08.2014, 09:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2014, 09:47
Помогаю со студенческими работами здесь

Рекурсивно и нерекурсивно описать логическую функцию, проверяющую на равенство два бинарных дерева
страшно каюсь, не подумайте что я ленивый тюлень и мне не хочется вникать в тему, обычно я никогда...

Требуется совершить обход квадратной матрицы по спирали
помогите с этой задачкой )) Спираль (Время: 1 сек. Память: 16 Мб Сложность: 38%) ...

Совершить в бинарном дереве обход Правый - Корень - Левый
Нужно совершить обход Правый корень левый в бинарном дереве. #include &quot;stdafx.h&quot; #include...

Как работает обход дерева
Допустим есть дерево с корнем 1. Левый лист 2, тоже имеющий левый лист 4. У корня есть правый лист...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru