Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
bugorqwerty
0 / 0 / 0
Регистрация: 18.02.2017
Сообщений: 9
1

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

21.03.2017, 21:12. Просмотров 917. Ответов 2

Не выводит значения узлов деревьев, как я понял происходит утечка памяти, но я не пойму, что нужно сделать. Программа ошибку не выдаёт. Просто ничего не выводит.[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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2017, 21:12
Ответы с готовыми решениями:

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

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

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

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

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

2
igorrr37
2037 / 1602 / 799
Регистрация: 21.12.2010
Сообщений: 2,751
Записей в блоге: 10
22.03.2017, 01:06 2
C++
1
void insert_helper(TNode<T> *& r, const T & x)
нужно передавать указатель по ссылке
1
alex white
272 / 224 / 91
Регистрация: 27.06.2016
Сообщений: 635
Завершенные тесты: 1
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2017, 01:09

Распечатка бинарного дерева поиска
Много где висит функция void print(int deep, ptree p) { if(p) { print(deep + 1, p-&gt;l); ...

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

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


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

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

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