Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 47
1

Алгоритмы обходов дерева

12.07.2012, 19:06. Просмотров 5728. Ответов 4
Метки нет (Все метки)

Всем добрый вечер. Не у кого случаем не завалялись алгоритмы для обходов дерева, если да, то поделитесь пожалуйста.
Нужны обходы:
Прямой или префиксный порядок (сверху вниз)
Обратный или инфиксный порядок (слева направо)
Концевой или постфиксный порядок (снизу вверх)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2012, 19:06
Ответы с готовыми решениями:

Построение обходов графа
Задание: дано: неориентированный граф, заданный в виде перечня ребр. Учесть, что задание ребра...

Количество обходов шахматной доски конём (с возвратом в начальную клетку)
Всем добрый день, нужна помощь. Нужно найти на доске n*m количество обходов доски. n,m <=6. С...

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

Реализовать алгоритмы построения прямой: простой пошаговый алгоритм и алгоритмы Брезенхема
1. Написать на языке PASCAL программу, реализующую алгоритмы построения прямой: простой пошаговый...

4
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
12.07.2012, 21:09 2
Лучший ответ Сообщение было отмечено как решение

Решение

hazerot, если говорить о рекурсивной реализации, всё довольно просто, фактически, название обхода определяет реализацию.
Префиксный обход:
C++
1
2
3
4
5
6
7
8
9
10
void preorder(TreeNode *node)
{
    if (node != 0)
    {
        std::cout << node->data << std::endl;
        
        preorder(node->left);
        preorder(node->right);
    }
}
Инфиксный обход:
C++
1
2
3
4
5
6
7
8
9
10
11
void inorder(TreeNode *node)
{
    if (node != 0)
    {
        inorder(node->left);
        
        std::cout << node->data << std::endl;
        
        inorder(node->right);
    }
}
Постфиксный обход:
C++
1
2
3
4
5
6
7
8
9
10
void postorder(TreeNode *node)
{
    if (node != 0)
    {
        postorder(node->left);
        postorder(node->right);
        
        std::cout << node->data << std::endl;
    }
}
6
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
03.01.2013, 01:03 3
silent_1991, это ж левоассоциативные обходы?
Цитата Сообщение от silent_1991 Посмотреть сообщение
C
1
2
3
4
5
6
7
8
void preorder(TreeNode *node) 
{ 
if (node != 0) 
{ std::cout << node->data << std::endl;
preorder(node->left); 
preorder(node->right); 
} 
}
Для того чтобы были правоассоциативные нужно поменять 5 и 6 строчку???
0
Эксперт С++
5037 / 3097 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
08.01.2013, 14:32 4
Цитата Сообщение от akk Посмотреть сообщение
Для того чтобы были правоассоциативные нужно поменять 5 и 6 строчку???
Очевидно, да.
0
0 / 0 / 1
Регистрация: 07.02.2017
Сообщений: 40
07.05.2017, 20:43 5
А что мы должны передавать в функцию?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2017, 20:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Циклические алгоритмы. Алгоритмы обработки последовательностей чисел
Помогите пожалуйста program Lab_3_1; const x1=1; xn=3; dx=0.2; a=3.9; ...

Циклические алгоритмы. Алгоритмы обработки последовательностей чисел
Помогите пожалуйста... Преподаватель говорит что: 1. Программа считает правильно (за...

Опросник. Создание дерева зависимостей в treeView, сохранение дерева в XML, построение дерева в treeView из XML
Всем доброго времени суток. Тема является продолжением вот этой темы. Создаю 2ю, так как там...

Циклические алгоритмы (Алгоритмы с одним циклом)
Доброго времени суток! Помогите пожалуйста написать программы на циклы в Delphi 7, а то я только...

Выборка данных с различных уровней дерева по id категории из середины дерева
Здравствуйте. Такая штука: есть дерево категорий, известен Id категории, которая находится в...

Запись бинарного дерева в файл и восстановление из него этого дерева
Задача такая: есть бинарное дерево. Каждый элемент дерева содержит 3 указателя - 1 указатель на...


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

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

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