Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Pavel_2011
1 / 1 / 1
Регистрация: 23.10.2013
Сообщений: 69
#1

АВЛ-дерево

03.06.2014, 12:00. Просмотров 2220. Ответов 1
Метки нет (Все метки)

Из входной последовательности символов построить АВЛ-дерево без повторов. Найти в нем узел, относительно которого будет максимальная разница количества элементов в левом и правом поддеревьях. Вывести значение этого узла и количество элементов в левом и правом поддеревьях.

Я написал код ввода, вывод, удаление, но не могу написать остальные ф-ции. Напишите, кто знает. Буду благодарен

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
using namespace std;
struct node    // описание узла
{
    int info;   // информационное поле
    node *left; // указатель на левое поддерево
    node *right; // указатель на правое поддерево
};
 
node * create(int d) // формирование нового элемента дерева
{
    node *p = new node;  // выделение памяти под новый узел
    p->info = d;
    p->left = NULL;    // слева нет потомков 
    p->right = NULL;   // справа нет потомков
    return p;
}
void  insert(node **p, int d) // добавление узла в дерево поиска
{
    if (*p == NULL) *p = create(d);
    else
    {
        if (d<(*p)->info)//если d меньше значения в узле - идем влево
            // если там нет узла - создаем
        if (&(*p)->left == NULL) (*p)->left = create(d);
        else //если узел есть, вызываем вставку в левую ветвь
            insert(&(*p)->left, d);
        if (d>(*p)->info)//если d больше значения в узле, идем вправо
            //если там нет узла – создаем новый узел
        if (&(*p)->right == NULL) (*p)->right = create(d);
        else //если узел есть, вызываем вставку в правую ветвь
            insert(&(*p)->right, d);
    }
}
 
// распечатка дерева в симметричном порядке
void printsim(const node * p)
{
    if (p != NULL)   //  если дерево не пусто
    {
        printsim(p->left);   //  печатаем левое поддерево     
        cout << p->info << "  ";  // печатаем значение текущего узла
        printsim(p->right);  //  печатаем правое поддерево
    }
}
// распечатка дерева в прямом порядке
void printpr(const node * p)
{
    if (p != NULL)   //  если дерево не пусто
    {
        cout << p->info << "  ";  // печатаем значение текущего 
        printpr(p->left);   //  печатаем левое поддерево     
        printpr(p->right);  //  печатаем правое поддерево
    }
}
 
// распечатка дерева в обратном порядке
void printobrat(const node * p)
{
    if (p != NULL)   //  если дерево не пусто
    {
        printobrat(p->left);   //  печатаем левое поддерево     
        printobrat(p->right);  //  печатаем правое поддерево
        cout << p->info << "  ";  // печатаем значение текущего 
            
    }
}
 
 
 
 
void clear(node **p)     // очистка дерева
{
    if ((*p) != NULL)           //  если дерево не пусто
    {
        clear(&(*p)->left);   //  удаляем левое поддерево     
        clear(&(*p)->right);  //  удаляем правое поддерево    
        delete *p; //Удаляем указатель на текущий узел
        *p = NULL;//Присваиваем ему пустой указатель
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 12:00
Ответы с готовыми решениями:

АВЛ дерево
Здравствуйте. Я начинающий программист и мне нужна помощь. Сейчас пытаюсь...

АВЛ дерево и коллизия хэша
До некоторых пор думал, что красно-черное и авл деревья, да и вообще любые...

Высота авл дерева - как считать?
Добрый вечер. Забавно. Предположим, что пустой указатель равен -1, высота пр...

Комменты к реализации Красно-черного и АВЛ дерева
Люди добрые помогите разобрать и по возможности написать комментарии к этим 2м...

Как в АВЛ-дереве найти самую короткую ветвь и удалить ее?
Доброго времени суток. Нужна помощь. В АВЛ-дереве надо найти самую короткую...

1
SatanaXIII
03.06.2014, 13:16     АВЛ-дерево
  #2
 Комментарий модератора 
Pavel_2011, обрамляйте свой код в соответствующие теги кода.

http://www.cyberforum.ru/about-forum/thread103521.html#post594251
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 13:16
Привет! Вот еще темы с ответами:

Добрый день, читал на хабре про АВЛ-деревья и хотелось бы кое-что уточнить
Добрый день, читал на хабре про АВЛ-деревья и возник один вопрос вот ссылка...

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

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


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

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

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