Форум программистов, компьютерный форум, киберфорум
Наши страницы

Преобразование идельно сбалансированного дерева в дерево поиска - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Векторный калькулятор на классах http://www.cyberforum.ru/cpp-beginners/thread1192602.html
Привет всем. Преподаватель дал задание, написать векторный калькулятор на классах. На массивах в консоли я сделал для 4 операций, но как теперь переписать его на классы, используя перегрузку функций...
C++ будьте добры правильная программа надо( 4. Определить номера строк матрицы R, хотя бы один элемент которых равен с, и элементы этих строк умножить на d. http://www.cyberforum.ru/cpp-beginners/thread1192583.html
C++ C++ try catch throw в разных функциях
try и catch находятся в одной функции а throw вызывается из другой. ну MVS выкидывает исключение вместо передачи управления. что делать? проект консольный, не CLI Добавлено через 1 минуту даже...
Треугольник в С++ C++
Добрый день! Я уже обращался к Вам (http://www.cyberforum.ru/cpp-beginners/thread1158188.html) по этому вопросу, однако так и не разобрался. Еще раз перепишу задачку "Разработать класс на языке С++...
C++ Числа Спрага-Грюнди http://www.cyberforum.ru/cpp-beginners/thread1192501.html
Разработать программную модель следующей игры двух игроков (пользователь-компьютер), реализовав выигрышную стратегию для пользователя: На стол выкладываются 50 спичек. Каждый игрок по очереди...
C++ Конструктор копирования есть класс, в нем есть указать на участок памяти, как написать для этого класс конструктор копирования? как работает конструктор с указателями? подробнее

Показать сообщение отдельно
grikukan
62 / 62 / 21
Регистрация: 23.09.2012
Сообщений: 212
30.05.2014, 15:42
Ну обходим дерево,как когда печатаем, и кидаем в вектор все числа.
Затем делаем уже настоящее бинарное дерево
C++
1
2
3
4
5
6
7
8
9
edge* new_edge(long value)
{
    edge *a=new edge;
    a->val=value;
    a->l=NULL;
    a->r=NULL;
    a->p=NULL;
    return a;
}
шаблон чистой вершины
C++
1
2
3
4
5
6
7
8
9
edge* new_edge(long value)
{
    edge *a=new edge;
    a->val=value;
    a->l=NULL;
    a->r=NULL;
    a->p=NULL;
    return a;
}
Соответственно где-то в int main() создаем вершину и объявляем ее корнем.

Пишем процедуру добавления в дерево
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
void ins(edge *root, edge *add)
{
    if(root->l!=NULL && root->val>add->val)
    {
        return ins(root->l,add);
    }
    else
    if(root->r!=NULL && root->val<add->val)
    {
         return ins(root->r,add);
    }
    else if(root->val>add->val)
    {
        root->l=add;
        add->p=root;
    }
    else
    {
        root->r=add;
        add->p=root;
    }
 
 
}
А потом просто в int main() по очереди вызываем добавление каждого элемента вектора в дерево
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru