Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2015, 12:47   #1
Ти6ка
Пользователь
 
Регистрация: 22.04.2015
Сообщений: 24
Сообщение Бинарные деревья

Помогите написать программу:
Вершина бинарного дерева содержит ключ, N целых значений и два указателя на потомков. Написать функцию удаления вершины с максимальной суммой N целых значений узла.
Ти6ка вне форума Ответить с цитированием
Старый 09.05.2015, 16:20   #2
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Примерный код:
http://pastebin.com/J7aL01rR
Насколько я понял, ключ - какое-то целочисленный объект, значение - список из N целых чисел.
В данном примере использован std::vector<int> в качестве значения, но т.к. функции шаблонные, вы можете использовать что-нибудь другое. Также не составит труда переписать все это аккуратнее в виде класса.

Небольшое пояснение к коду: вспомогательные функции: add_node(tree, key, value), добавляет в дерево tree, узел с ключом key, и значением value.
show - выводит все узлы дерева. find_max - находит ключ, для которого сумма всех элементов std::vector максимальна для дерева. get_min - находит узел с минимальным ключем в дереве, эта функция требуется для работы основной функции remove_node, которая удаляет узел по ключу.

Последний раз редактировалось halcyon; 09.05.2015 в 16:22.
halcyon вне форума Ответить с цитированием
Старый 10.05.2015, 10:09   #3
Ти6ка
Пользователь
 
Регистрация: 22.04.2015
Сообщений: 24
По умолчанию

а можно код без шаблонов, а то я пока с ними не знаком?
Ти6ка вне форума Ответить с цитированием
Старый 11.05.2015, 06:29   #4
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Значит самое время познакомиться! А вообще избавиться от шаблонности очень просто, нужно убрать все template <> в определениях, и явно типизировать функции и структуру node.
Например, выглядеть это будет примерно так:
Код:
struct node {
    int key;
    std::vector<int> data;
    node left;
    node right;
    node(): left(nullptr), right(nullptr) {}
};
; функции:
Код:
node* add_node(node* root, int key, const std::vector<int>& value) {
...
}
halcyon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарные деревья cheef Помощь студентам 0 30.05.2012 19:37
Бинарные деревья Айс Беби Помощь студентам 0 27.05.2012 22:38
Бинарные деревья Aleks_90 Помощь студентам 0 07.06.2009 15:06
Бинарные деревья Марсель059 Общие вопросы C/C++ 3 20.05.2009 21:47
бинарные деревья. ribka Помощь студентам 2 30.11.2007 18:13