Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
hazerot
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 46
12.07.2012, 19:06     Алгоритмы обходов дерева #1
Всем добрый вечер. Не у кого случаем не завалялись алгоритмы для обходов дерева, если да, то поделитесь пожалуйста.
Нужны обходы:
Прямой или префиксный порядок (сверху вниз)
Обратный или инфиксный порядок (слева направо)
Концевой или постфиксный порядок (снизу вверх)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2012, 19:06     Алгоритмы обходов дерева
Посмотрите здесь:

C++ Алгоритмы разветвления
C++ Алгоритмы и методы
C++ Алгоритмы и методы
C++ Вывод бинарного дерева на экран в виде "дерева"
C++ Алгоритмы на C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
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;
    }
}
akk
 Аватар для akk
44 / 44 / 7
Регистрация: 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 строчку???
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
08.01.2013, 14:32     Алгоритмы обходов дерева #4
Цитата Сообщение от akk Посмотреть сообщение
Для того чтобы были правоассоциативные нужно поменять 5 и 6 строчку???
Очевидно, да.
Yandex
Объявления
08.01.2013, 14:32     Алгоритмы обходов дерева
Ответ Создать тему
Опции темы

Текущее время: 13:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru