Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 9
1

Реализация бинарного дерева поиска

21.03.2017, 21:12. Показов 2472. Ответов 2

Author24 — интернет-сервис помощи студентам
Не выводит значения узлов деревьев, как я понял происходит утечка памяти, но я не пойму, что нужно сделать. Программа ошибку не выдаёт. Просто ничего не выводит.[CPP]template
C++
1
2
3
4
5
6
7
8
9
10
11
12
template <typename T>
class TNode 
    {
    public:
        T data;
        TNode * left;
        TNode * right;
 
        TNode(TNode * left, TNode * right, const T & x) : left(left), right(right), data(x) {};
        TNode(const T & x) : left(nullptr), right(nullptr), data(x) {};
        //TNode() : left(nullptr), right(nullptr), data(T()) {};
    };
C++
1
2
3
4
5
6
7
template <typename T>
class DTree
{
    TNode<T> * root;
public:
    //Конструктор
    DTree() : root(nullptr) {};
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
void insert_helper(TNode<T> * r, const T & x)
    {
        if (r == nullptr)
            r = new TNode<T>(nullptr, nullptr, x);
        else
            if (x <= r->data)
                insert_helper(r->left, x);
            else
                if (x >= r->data)
                    insert_helper(r->right, x);
 
    }
 
    void add(const T & x)
    {
        insert_helper(this->root, x);
    }
 
    void prefix(TNode<T> * r) const
    {
        if (r != nullptr)
        {
            std::cout << r->data << std::endl;
            prefix(r->left);
            prefix(r->right);
        }
    }
 
    void printPrefix() const
    {
        prefix(this->root);
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
 
{
 
    DTree<int> r;
    //r.add(r,3);
    r.add(10);
    r.add(7);
    r.add(12);
    r.printPrefix();
    
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2017, 21:12
Ответы с готовыми решениями:

Реализация бинарного дерева поиска
Задача: Реализация бинарного дерева поиска Компилируется нормально, а при запуске выбивает ошибку...

Реализация бинарного дерева
написать программу, реализующую бинарное дерево. Предусмотреть процедуры и функции: инициализация...

Реализация бинарного дерева
Доброго времени суток, уважаемые форумчане. Возник вопрос по реализации бинарного дерева на С++, а...

Реализация и вывод бинарного дерева
Помогите создать бинарное дерево и вывести его на экран по уровням. Заранее спасибо.

2
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
22.03.2017, 01:06 2
C++
1
void insert_helper(TNode<T> *& r, const T & x)
нужно передавать указатель по ссылке
1
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
22.03.2017, 01:09 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
void insert_helper(TNode<T> * r, const T & x)
    {
        if (r == nullptr)
            r = new TNode<T>(nullptr, nullptr, x);
        else
            if (x <= r->data)
                insert_helper(r->left, x);
            else
                if (x >= r->data)
                    insert_helper(r->right, x);
 
    }
r - это локальная переменная типа TNode<T>*. Её присвоение не изменит корня дерева (this->root) или какие либо другие поддеревья. Можете передавать указатель в insert_helper по ссылке (TNode<T>*&), либо возвращать и присваивать его новое значение (this->root = insert_helper(this->root, x)).
1
22.03.2017, 01:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2017, 01:09
Помогаю со студенческими работами здесь

Реализация бинарного дерева классом
Добрый вечер. Написал класс class TreeClass { int number; TreeClass *left, *right; public:...

Итератор дерева бинарного поиска
Если у нас в качестве коллекции выступают вектора, очереди, стеки и т.п. то там вроде бы всё...

Создание бинарного дерева поиска
Людииииии помогите пож-таааа.....Нужно создать бинарное дерево поиска, считывая элементы из текст...

Алгоритм бинарного дерева поиска
Здравствуйте! Помогите найти информацию по поводу данного алгоритма, может быть какие-то...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru