С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 06.10.2018
Сообщений: 161

Вывод дерева на экран

21.05.2019, 01:18. Показов 2268. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, надо вывести бинарное дерево на экран в виде дерева. Есть функция showTree(), но не знаю, как её написать под то, что у меня есть. Вот что есть:
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
82
83
84
85
86
87
88
#include<iostream>
#include<time.h>
using namespace std;
 
struct TNode {
    int value;
    TNode* left;
    TNode* right;
}*tree;
int depth(TNode* tree, int depthCount);
void addElement(int value, TNode*& tree);
void deleteElements(TNode*& tree);
void showTree(TNode*& tree, int level);
int main()
{
    setlocale(0, "");               
    srand(time(0));
    tree = NULL;
    int depthCount = 0;
    cout << "Введите количество элементов: ";
    int countOfElenets;
    cin >> countOfElenets;
    for (int i = 0; i < countOfElenets; i++)
        addElement(rand() % 101, tree);
    int depthTree = depth(tree, depthCount);
    cout << "Глубина дерева: " << depthTree << endl;
    deleteElements(tree);
 
    return 0;
}
int depth(TNode* tree, int depthCount)
{
    if (tree == NULL)
        return depthCount;
    if (depth(tree->left, depthCount + 1) > depth(tree->right, depthCount + 1))
        return depth(tree->left, depthCount + 1);
    else
        return depth(tree->right, depthCount + 1);
}
void addElement(int value, TNode*& tree)
{
    //cout << "\t" << value << endl; "//"
    if (NULL == tree) {
        tree = new TNode;
        tree->value = value;
        cout << "\t" << value << endl;
        tree->left = tree->right = NULL;
    }
    if (value < tree->value) {
        if (tree->left != NULL)
            addElement(value, tree->left);
        else {
            tree->left = new TNode;
            tree->left->left = tree->left->right = NULL;
            tree->left->value = value;
            cout << "\t" << value << endl;
        }
    }       
    if (value > tree->value) {
        if(tree->right!=NULL)
            addElement(value, tree->right);
        else {
            tree->right = new TNode;
            tree->right->left = tree->right->right = NULL;
            tree->right->value = value;
            cout << "\t" << value << endl;
        }
    }
}
void deleteElements(TNode*& tree)
{
    if (tree != NULL) {
        deleteElements(tree->left);
        deleteElements(tree->right);
        delete tree;
        tree = NULL;
    }
}
void showTree(TNode*& tree, int level)
{
    if (tree) {
        showTree(tree->right, level + 1);
        for (int i = 0; i < level; i++)
            cout << " ";
        cout << tree->value << endl;
        showTree(tree->left, level + 1);
    }
}
Не знаю, для чего в этой функции надо переменная level.

Добавлено через 1 час 14 минут
Написал так main():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
    setlocale(0, "");               
    srand(time(0));
    tree = NULL;
    int depthCount = 0;
    cout << "Введите количество элементов: ";
    int countOfElenets;
    cin >> countOfElenets;
    for (int i = 0; i < countOfElenets; i++)
        addElement(rand() % 101, tree);
    int depthTree = depth(tree, depthCount);
    cout << "Глубина дерева: " << depthTree << endl;
    showTree(tree, depthTree);
    deleteElements(tree);
 
    return 0;
}
Помогите исправить ошибку.

Добавлено через 10 минут
Выводит в порядке убывания, а не в порядке добавления.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2019, 01:18
Ответы с готовыми решениями:

Вывод бинарного дерева на экран в виде "дерева"
основная задача: подсчет количества листьев. проблема: при просмотре хочу выводить бин. дерево, в красивом виде, возможно использование...

Вывод дерева на экран
#include &lt;iostream&gt; using std::cout; using std::endl; template&lt;typename T&gt; class avltree { public: struct node...

Вывод дерева на экран
Создаю бинарное дерево, заполняю его случайными числами. Хотелось бы все это дело аккуратно вывести на экран:) А также подсчитать сумму...

1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
21.05.2019, 01:23
Цитата Сообщение от YFKoenigsegg Посмотреть сообщение
Выводит в порядке убывания, а не в порядке добавления.
Вы в курсе, что такое бинарное дерево?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.05.2019, 01:23
Помогаю со студенческими работами здесь

Вывод на экран n-мерного дерева.
Есть н мерное дерево. Надо вывести в окне консольки. Структура такая: struct Tree{ int number; // номер int level; //...

Бинарные деревья, вывод дерева на экран
Создание бинарное дерево, помогите с выводом дерева на экран #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std;...

Создание дерева и вывод его на экран
Требуется создать бинарное дерево, состоящее из 7 уровней, заполненное рандомными числами. И вывести на экран приблизительно похожим на...

Запись массива в виде бинарного дерева и вывод его на экран!
Задача: Зарандомить массив с 30 ел... от -100 до 100, создать бинарное дерево использую дан. массив, Вывод массива и дерева на экран.. ...

Почему при выборе switch у меня не работает вывод дерева на экран?!
////////////////////////////////////////////////////// // // // Ñîçäàòü ïðîãðàììó äëÿ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru