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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
element_1417
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 5
#1

Рекурсивные деревья - C++

27.04.2012, 15:21. Просмотров 633. Ответов 2
Метки нет (Все метки)

День добрый.
Очень нужна помощь в решении задачи:

Найти все поддеревья, структура которых совпадает с заданной.

Ввод/Создание/Вывод/...дерева написать труда не составило.
С рекурсией и прочим тоже никаких вопросов.
А вот с основным заданием возникла проблема.
Как я понимаю, нужно сравнивать количество сыновей введённой структуры и исходного дерева, перемещаясь сверху-вниз по исходному. Но элементарно не могу написать код. Но элементарно не могу это запрограммировать.
Может быть, чем поможете.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2012, 15:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсивные деревья (C++):

Рекурсивные Деревья - C++
Прошу помощи. Написал код для бинарных деревьев, тут же всунул дерево минимальной высоты. Но при компиляции выдает ошибки в строке 6 и 8....

Рекурсивные и не рекурсивные функции (вычисление суммы всех натуральных чисел от 1 до n) - C++
Всем привет. Заранее извиняюсь за мб глупые вопросы и навязчивость. Но у меня есть одна просьба. Помогите пожалуйста написать...

рекурсивные алгоритмы - C++
помогите с задачкой пожалуйста надо разработать программную рекурсивную функцию, выводящую на пе-чать n символов латинского алфавита в...

рекурсивные классы - C++
Доброго времени суток. Скажите пожалуйста, можно ли при написании класса объявить в нём поле того же типа что и сам класс? Компилятор...

рекурсивные функции - C++
1. Найти НОД (наибольший общий делитель) двух натуральных чисел. 2. В одномерном массиве, состоящем из n целых элементов, вычислить номер...

Рекурсивные алгоритмы - C++
не могу понять как сделать... помогите пожалуйста Написати рекурсивну функцію, що визначає, чи є симетричною частина рядка, ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
element_1417
0 / 0 / 0
Регистрация: 16.04.2012
Сообщений: 5
04.05.2012, 21:54  [ТС] #2
Неужели никто ничем помочь не может?
0
rst256
0 / 0 / 0
Регистрация: 16.04.2016
Сообщений: 3
18.03.2017, 19:48 #3
А в чем конкретно проблема то, если
Цитата Сообщение от element_1417 Посмотреть сообщение
С рекурсией и прочим тоже никаких вопросов.
?
Просто сделай внутри рекурсивного обхода узлов дерева сравнение его узлов с эталоном, если будет несовпадение на корневом узле эталона делай тогда сравнение узла с корнем эталона. Если будет совпадение и узел эталона корневой значит под-узел найден.
Вот пример кода на си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int check_eq_root(tree_node * current_node, tree_node * match_node, tree_node * match_node_root){
    if( current_node->value==match_node->value && 
        check_eq(current_node->left, match_node->left, match_node_root) &&
        check_eq(current_node->rigth, match_node->rigth, match_node_root) &&
        . . .
        check_eq(current_node->some, match_node->some, match_node_root) 
    ){ // если текущий узел и его подузлы соответствуют текущему узлу эталона, тогда ...
        if( match_node==match_node_root ) // если при этом текущий узел эталона корневой, тогда ... 
            printf("node found: %p\n", current_node); // поддерево найдено. (возвр. значение при этом роли не играет).
        return 1; 
    }else{
        if( match_node!=match_node_root ) // если текущий узел эталона НЕ корневой, тогда ... 
            check_eq(current_node, match_node_root, match_node_root); // сравниваем текущий узел с корневым эталона
        return 0; // в не зависимости от сравнения с корневым эталона результат 0 (false).
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2017, 19:48
Привет! Вот еще темы с ответами:

Рекурсивные функции - C++
в функции мейн обьявить двумерный массив размером A заполнить случайным образом 1 и 2, вывести масив на экран написать рекурсивную...

РЕКУРСИВНЫЕ АЛГОРИТМЫ - C++
Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом (функция M воз-вращает...

рекурсивные функции - C++
Дано натуральные числа n,m ; найти НОД(наибольший общий делитель) . Использовать программу, которая содержит рекурсивную процедуру...

Рекурсивные функции - C++
Всем привет. Ребят, помогите. Задание: с помощью рекурсивной функции вычислить сумму элементов одномерного массива. Не спец в этом, задали...


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

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

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