Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 09.03.2018
Сообщений: 50
1

Найти ширину левого под-дерева АВЛ

03.06.2022, 03:59. Показов 278. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый день. Есть задача найти ширину левого поддерева. Что такое дерево и как оно работает - худо-бедно разобрался.. Но вот, как найти его ширину - увы, не знаю и не представляю, как это делать от слова - вовсе. Это код из книжки, вроде бы понимаю его..

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2022, 03:59
Ответы с готовыми решениями:

Шаблонный класс АВЛ-дерева на основе шаблонного класса банкарного дерева(с использованием паттерна "Стратегия')
Задача заключается в следующем: Пока что я написал только задание 0, вот код из файла...

Сравнение бинарного дерева и АВЛ дерева
Здравствуйте, уважаемые форумчане. Делаю лабораторную по структурам данных и столкнулся с...

В чем разница идеально сбалансированного дерева и АВЛ дерева?
Добрый день, сам вопрос впринципе описан в заголовке. Перелазил большую часть интернета и...

Найти ширину дерева
Необходимо найти ширину дерева (не двоичного). Пожалуйста кто знает киньте где посмотреть о...

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

0
03.06.2022, 03:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2022, 03:59
Помогаю со студенческими работами здесь

Обход АВЛ-Дерева
Всем привет! Возникла небольшая проблема, в программе которая реализует обход АВЛ-Дерева не...

Для узлов дерева, имеющих одного левого потомка, найти наибольший элемент
Построить произвольное двоичное дерево. Для узлов дерева, имеющих одного левого потомка, найти...

Найти разницу между глубинами левого и правого поддеревьев, относительно корня дерева
//Определить является ли дерево АВЛ-деревом, если не является, то определить узел с максимальной...

Найти максимальную ширину двоичного дерева
Алгоритм следующий: Создаётся массив. Где каждый элемент массива это кол-во вершин на каждом...

Найти ширину дерева общего вида
Надо найти ширину дерева общего вида. Вот только о деревьях общего вида нигде ничего нет. Кто знает...

Функция определения АВЛ дерева
Добрый вечер. Есть задание: составить функцию, которая вывод ненулевое значение, если дерево АВЛ,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru