Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
232 / 214 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
1

Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк)

01.05.2013, 17:52. Просмотров 1210. Ответов 3
Метки нет (Все метки)

Добрый вечер всем. Понимаю, что вопрос заезженный, но тем не менее, я вынужден создать тему. Задача -
Имеется необходимость работать с упорядоченными бинарными
деревьями поиска вещественных чисел, линейных многочленов и двоичных строк.
Двоичная строка --- это строка из 0 и 1, их можно сравнивать
в лексикографическом порядке. Линейный многочлен ax+b меньше многочлена
cx+d, если пара <a,b> меньше пары <c,d> в лексикографическом порядке.
Разработайте набор классов, позволяющих работать с такими объектами.
Для деревьев предусмотреть методы: вставка и удаление элемента в дерево, вывод
дерева в поток по уровням (от корня к листьям), ввод из
потока, метод, возвращающий путь в дереве от корня к элементу x
в виде динамического массива элементов.

Проблема - не могу сообразить как правильно организовать работу с шаблонами - сами функции написать не проблема - алгоритмы стандартные.
А вот с шаблонами пока не подружился - вроде бы все просто, но нужен направляющий импульс.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
template <class T>
class Tree
{
    struct tree
    {
        tree* Left;
        tree* Right;
        T Key;
    };
    tree* root;
public:
    
    Tree();
    virtual ~Tree();
    void Destroy(tree*& Root);
    void Add(T val);
    
};
 
template <class T>
Tree<T>::Tree():root->Left(0),root->Right(0),root->Key(0)
{
 
}
template <class T>
void Tree<T>::Destroy(tree*& Root)
{
    if(!Root)
    {
        return;
    }
    Destroy(Root->Right);
    Destroy(Root->Left);
}
На данном этапе не могу сообразить, где взять корень для передачи в Destroy(tree*& Root)
Передавать туда приватный root - но я же не буду иметь к нему доступа из мэйна.
С остальными функциями аналогичная проблема.
И еще, не могу сообразить как работать с шаблонами в мэйне.
Вроде и книжки умные читал...
Короче - или я дурак, или лыжи не едут...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2013, 17:52
Ответы с готовыми решениями:

Бинарные деревья поиска
Доброй ночи, помогите пожалуйста разобраться в коде, я его нашел в интернете: class Tree&lt;T&gt;...

Бинарные деревья поиска
Здравствуйте. Помогите решить задачу. Написать функцию, которая удаляет из бинарного дерева поиска...

Бинарные деревья поиска. Вычислить высоту (Некорректно вычисляется :с )
Код рабочий, но выдает некорректную высоту дерева, где я затупил, уже и понять не могу -.-...

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

3
380 / 351 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 18:37 2
Ded_Vasilij, можно сделать функции-хелперы

C++
1
2
3
void Destroy_Helper(tree*& Root){
            Destroy(tree Root);
}
и уже ее можно вызывать из мейна
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 866
Записей в блоге: 10
01.05.2013, 19:35 3
)))
Эти функций должны быть в привате класса )))
ты их должен вызывать в нормальном дестрое


~Tree()
{
Destroy(root);
этот же родной root))
}

в мэине зачем вызывать деструктор - это классовский сам вызовется
0
232 / 214 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
01.05.2013, 20:09  [ТС] 4
Qazan, это вроде понятно, а вот допустим добавление элемента- там же тоже рекурсия
Как ее вызывать что на вход подавать? Тот же root? Как вообще это в мейне организовать все?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2013, 20:09

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

Начертите бинарные деревья поиска высотой 2,3,4,5 и 6 для множества ключей
Помогите пожалуйста написать код по данной задаче и прокомментировать каждое действие, ни как не...

Распечатать, посчитать среднее арифметическое, преобразовать в дерево поиска [Бинарные деревья]
Дано идеально сбалансированное дерево. Не выводиться дерево:(... Не понимаю как пройтись по...

Бинарные деревья. Вывод потомков для каждого из узлов бинарного дерева поиска
Здравствуйте, уважаемые форумчане! Продолжая изучать бинарные деревья, решил подумать о выгодности...

Написать программу умножения двух двоичных вещественных чисел
Доброго времени суток, уважаемые участники форума. Поюзал поиск и не нашёл чего-то похожего (каюсь,...


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

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

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