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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
poteytus
0 / 0 / 0
Регистрация: 18.12.2015
Сообщений: 16
#1

Декартово дерево - C++

15.03.2016, 12:09. Просмотров 139. Ответов 0
Метки нет (Все метки)

C++ (Qt)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <windows.h>
#include <iostream>
struct item {
    int key, prior;
    item * l, *r;
    item() { }
    item(int key, int prior) : key(key), prior(prior), l(NULL), r(NULL) { }
};
typedef item * pitem;
 
void split(pitem t, int key, pitem & l, pitem & r) {
    if (!t)
        l = r = NULL;
    else if (key < t->key)
        split(t->l, key, l, t->l), r = t;
    else
        split(t->r, key, t->r, r), l = t;
}
 
void insert(pitem & t, pitem it) {
    if (!t)
        t = it;
    else if (it->prior > t->prior)
        split(t, it->key, it->l, it->r), t = it;
    else
        insert(it->key < t->key ? t->l : t->r, it);
}
 
void merge(pitem & t, pitem l, pitem r) {
    if (!l || !r)
        t = l ? l : r;
    else if (l->prior > r->prior)
        merge(l->r, l->r, r), t = l;
    else
        merge(r->l, l, r->l), t = r;
}
 
void erase(pitem & t, int key) {
    if (t->key == key)
        merge(t, t->l, t->r);
    else
        erase(key < t->key ? t->l : t->r, key);
}
 
pitem unite(pitem l, pitem r) {
    if (!l || !r)  return l ? l : r;
    if (l->prior < r->prior)
    {
        pitem pp = l;
        l = r;
        r = pp;
    }
    pitem lt, rt;
    split(r, l->key, lt, rt);
    l->l = unite(l->l, lt);
    l->r = unite(l->r, rt);
    return l;
}
Сами операции реализовал, а вот вывод на экран и ввод с клавиатуры не получаются, буду благодарен за помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2016, 12:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Декартово дерево (C++):

Декартово дерево - C++
Уже долго мучаюсь над декартовым деревом. После очередной попытки создал вот такую структуру: struct treap{ int x, y,num;...

C++, реализовать декартово дерево - C++
Есть код. Но у меня дерево формируется по набору ключей, при этом из него ничего нельзя удалить. (Да и кроме того, дерево должно кроме...

Декартово произведение множеств - C++
всем привет. помогите пожалуйста написать программу, которая будет считать декартово произведение и записывать результат в файл то есть...

Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой - C++
Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой.

Ищу готовый код с примерами реализации деревьев (AVL, красно-черное, декартово) - C++
Может у кого завалялась его реализация AVL дерева, красно-чёрного дерева либо декартового (treap) дерева? Было бы очень кстати, а если...

Дано дерево. Распечатать дерево по уровням - C++
Дано дерево. Распечатать дерево по уровням.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2016, 12:09
Привет! Вот еще темы с ответами:

Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру - C++
Помогите, не могу понять!( Нужно исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру. вот...

Напишите программу, которая бы читала дерево в формате (а) и затем печатала бы это дерево в формате (б). - C++
Представление дерева: а) Д (Б (А, Ф (В,)), Е (,З (Ж, И))) б) Д Б А Ф ...

Дерево дерево, странное дерево - C++
Нужна помощь в построении дерева. Задание таково: Вершина дерева содержит N целых значений и два указателя на потомков. Запись значений...

Дерево, бинарное дерево - C++
Читаю про дерево и не до конца понимаю, а точнее понимаю, но вопрос в том, правильно ли я понимаю, надеюсь вы мне подскажите. Вот есть...


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

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

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