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

Объединение 2-х бинарных деревьев в одно - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.71
error3456
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 8
22.02.2011, 20:55     Объединение 2-х бинарных деревьев в одно #1
Необходима функция объединения 2-х бинарных сбалансированных деревьев в одно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dxdy
 Аватар для dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
22.02.2011, 21:00     Объединение 2-х бинарных деревьев в одно #2
после объединения полученное дерево тоже должно быть сбалансированным?
error3456
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 8
22.02.2011, 21:27  [ТС]     Объединение 2-х бинарных деревьев в одно #3
желательно
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
22.02.2011, 22:19     Объединение 2-х бинарных деревьев в одно #4
C
1
2
3
4
5
void unite(node* root1, node* root2){
    if(root1->left!=NULL) unite(root1->left, root2);
    root2->insert(root1->value);
    if(root1->right!=NULL) unite(root1->right, root2);
}
error3456
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 8
23.02.2011, 16:11  [ТС]     Объединение 2-х бинарных деревьев в одно #5
только тут второе дерево не удаляется.
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
23.02.2011, 16:29     Объединение 2-х бинарных деревьев в одно #6
ну, можно добавить ф-цию удаления за'insert'ченного узла, как то так
C++
1
2
3
4
5
6
7
void unite(node* root1, node* root2){
    if(root1->left!=NULL) unite(root1->left, root2);
    if(root1->right!=NULL) unite(root1->right, root2);
    root2->insert(root1->value);
    delete root1;
    root1=NULL;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2011, 17:52     Объединение 2-х бинарных деревьев в одно
Еще ссылки по теме:

Класс бинарных деревьев. Наследование C++
C++ Нужен совет по алгоритмам, обход бинарных деревьев
C++ Почему так(комбинации бинарных и не бинарных вводов и выводов)?

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

Или воспользуйтесь поиском по форуму:
error3456
0 / 0 / 0
Регистрация: 22.02.2011
Сообщений: 8
27.02.2011, 17:52  [ТС]     Объединение 2-х бинарных деревьев в одно #7
а как проверить сбалансированность дерева?
Yandex
Объявления
27.02.2011, 17:52     Объединение 2-х бинарных деревьев в одно
Ответ Создать тему
Опции темы

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