3 / 2 / 1
Регистрация: 04.09.2019
Сообщений: 205
1

Бинарное дерево

19.01.2020, 12:43. Показов 1017. Ответов 5
Метки нет (Все метки)

Здравствуйте. Объясните пожалуйста подробно, по какому принципу идёт заполнение бинарного дерева числами? Я не могу понять.. Буду благодарен!
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
#include "pch.h"
#include <iostream>
#include <conio.h>
using namespace std;
struct node
{
    int info;
    node *anime, *right;
};
 
node *tree = NULL;
 
/*ФУНКЦИЯ ЗАПИСИ ЭЛЕМЕНТА В БИНАРНОЕ ДЕРЕВО*/
void zapis(int a, node **t)
{
    if ((*t) == NULL)
    {
        (*t) = new node;
        (*t)->info = a;
        (*t)->anime = (*t)->right = NULL;
        return;
    }
    //Дерево существует
    if (a > (*t)->info) zapis(a, &(*t)->right);
    else zapis(a, &(*t)->anime);
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ ДЕРЕВА НА ЭКРАНЕ*/
void vivod(node *t, int u)
{
    if (t == NULL) return;
    else //Иначе
    {
        vivod(t->anime, ++u);
        for (int i = 0; i < u; ++i) cout << "-";
        cout << t->info << endl;
        u--;
    }
    vivod(t->right, ++u);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, e;
    int s;
    int index = 1;
    do {
        cout << "Выберите действие: " << endl;
        cout << "1. Заполнить бинарное дерево.  " << endl;
        cout << "2. Вывести бинарное дерево." << endl;
        cin >> e;
 
        switch (e)
        {
        case 1: { cout << "введите количество элементов списка ";
            cin >> n;
            for (int i = 0; i < n; ++i)
            {
                index = i + 1;
                cout << "введите " << index << "-й" << " элемент списка " << endl;;
                cin >> s;
                zapis(s, &tree);
            }
        };  break;
        case 2: {cout << "ваше дерево\n"; vivod(tree, 0); };
                break;
            break;
        default:cout << " ошибка " << endl;
            break;
        }
    }
    while (e != 3);
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2020, 12:43
Ответы с готовыми решениями:

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

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

Бинарное Дерево
struct Tree { int value; Tree *l, *r; }; void add(Tree *&amp;obj, int value) { if (obj ==...

Бинарное дерево
Помогите пожалуйста с программой. Нужно сделать обход, слева и справа(функции get_left и...

5
6740 / 4538 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
19.01.2020, 13:18 2
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Здравствуйте. Объясните пожалуйста подробно, по какому принципу идёт заполнение бинарного дерева числами? Я не могу понять.. Буду благодарен!
Если новое значение больше текущего, заносим его в правую ветку, иначе - в левую.
1
3 / 2 / 1
Регистрация: 04.09.2019
Сообщений: 205
19.01.2020, 16:15  [ТС] 3
Cпасибо большое. Ещё нам преподаватель говорил о неком "обходе". Здесь используется прямой, верно?

Добавлено через 15 минут
И ещё.. Подскажите пожалуйста, где находится в коде выше "балансировка".
0
6740 / 4538 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
19.01.2020, 16:19 4
Лучший ответ Сообщение было отмечено Pandaprogrammer как решение

Решение

Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
Cпасибо большое. Ещё нам преподаватель говорил о неком "обходе". Здесь используется прямой, верно?
Не знаю, наверное да. Выводит элементы по-возрастанию.
Цитата Сообщение от Pandaprogrammer Посмотреть сообщение
И ещё.. Подскажите пожалуйста, где находится в коде выше "балансировка".
Нигде, здесь её нет.
1
3 / 2 / 1
Регистрация: 04.09.2019
Сообщений: 205
19.01.2020, 16:29  [ТС] 5
Спасибо.
0
3452 / 2802 / 766
Регистрация: 25.03.2012
Сообщений: 10,228
Записей в блоге: 1
20.01.2020, 12:51 6
казалось бы, при чём тут анимэ?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2020, 12:51

Бинарное дерево
Привет Делаю бинарное дерево, пытаюсь добавить элемент. Что делаю не так? Класс дерева...

Бинарное дерево
Задание сделать бинарное дерево, но при добавлении появилась проблема, не могу разобраться с...

Бинарное дерево
Нужно записать в дерево и вывести в форматированном виде каталог файлов(типа windows) на вход даны...

Бинарное дерево
Всем доброго времени суток! Задача такая: Реализовать бинарное дерево в программе...


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

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

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