Форум программистов, компьютерный форум CyberForum.ru

АВЛ-дерево - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Pavel_2011
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 66
03.06.2014, 12:00     АВЛ-дерево #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;//Присваиваем ему пустой указатель
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 12:00     АВЛ-дерево
Посмотрите здесь:

дерево C++
C++ Дерево
C++ Дерево, бинарное дерево
Высота авл дерева - как считать? C++
АВЛ дерево и коллизия хэша C++
C++ Дерево дерево, странное дерево
Комменты к реализации Красно-черного и АВЛ дерева C++
C++ Добрый день, читал на хабре про АВЛ-деревья и хотелось бы кое-что уточнить

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
03.06.2014, 13:16     АВЛ-дерево
  #2
 Комментарий модератора 
Pavel_2011, обрамляйте свой код в соответствующие теги кода.

http://www.cyberforum.ru/about-forum...tml#post594251
Yandex
Объявления
03.06.2014, 13:16     АВЛ-дерево
Ответ Создать тему
Опции темы

Текущее время: 02:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru