Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 2
1

Вывод на консоль бинарного дерева

10.04.2015, 20:17. Просмотров 3188. Ответов 2
Метки нет (Все метки)

как сделать вывод на консоль бинарного дерева?
C++
1
2
3
4
5
6
struct Node
{
    int d;
    Node* left;
    Node* right;
};
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "BTree.h"
using namespace std;
 
void AddEl(Node *& root, int _d)
{
    if (root == NULL)
    {
        root = new Node;
        root->d = _d;
        root->left = root->right = NULL;
        return;
    }
    if (root->d < _d)
        AddEl(root->right, _d);
    else
        AddEl(root->left, _d);
    
}
 
void Clean(Node *& root)
{
    if (root == NULL)
        return;
    if (root->left != NULL)
        Clean(root->left);
    if (root->right != NULL)
        Clean(root->right);
    delete root;
    root = NULL;
}
 
Node* SearchEl(Node* root, int _d)
{
    if (root->d == _d || root == NULL)
        return root;
    if (root->d < _d)
        return SearchEl(root->right, _d);
    else
        return SearchEl(root->left, _d);
}
 
int MinEl(Node* root)
{
    if (root->left != NULL)
        return MinEl(root->left);
    else
        return root->d;
}
 
int MaxEl(Node* root)
{
    if (root->right != NULL)
        return MaxEl(root->right);
    else
        return root->d;
}
 
void Copy(Node * from, Node *& to)
{
    if (from == NULL)
        return;
    AddEl(to, from->d);
    Copy(from->left, to);
    Copy(from->right, to);
}
 
BTree::BTree()
{
    root = NULL;
}
 
BTree::BTree(const BTree& Obj)
{
    root = NULL;
    if (Obj.root != NULL)
        Copy(Obj.root, root);
}
 
BTree::~BTree()
{
    Clean(root);
}
 
const BTree& BTree::operator = (const BTree& Obj)
{
    if (this == &Obj) return *this;
    Clean(root);
    if (Obj.root != NULL)
        Copy(Obj.root, root);
    return *this;
}
 
void BTree::Add(int _d)
{
    AddEl(root, _d);
}
 
Node* DelEl(Node* & root, int _d)
{
    Node *p;
    if (root == NULL)
        return NULL;
    if (root->d < _d)
        root->right = DelEl(root->right, _d);
    else if (root->d > _d)
        root->left = DelEl(root->left, _d);
    else
    {
        if (root->left == NULL && root->right == NULL)
        {
            delete root;
            return NULL;
        }
        if (root->left == NULL || root->right == NULL)
        {
            if (root->left == NULL)
                p = root->right;
            else
                p = root->left;
            delete root;
            return p;
        }
        if (root->right->left == NULL)
        {
            p = root->right;
            root->right->left = root->left;
            delete root;
            return p;
        }
        else
        {
            _d = MinEl(root->right);
            root->d = _d;
            root->right = DelEl(root->right, _d);
        }
    }
    return root;
}
 
void BTree::Del(int _d)
{
    root = DelEl(root, _d);
}
 
BTree BTree::Search(int _d)
{
    BTree R;
    Copy(SearchEl(root, _d), R.root);
    return R;
}
 
int BTree::Min()
{
    if (root != NULL)
    {
        return MinEl(root);
    }
    else
        exit(1);
}
 
int BTree::Max()
{
    if (root != NULL)
    {
        return MaxEl(root);
    }
    else
        exit(1);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2015, 20:17
Ответы с готовыми решениями:

Вывод бинарного дерева в консоль
Доброго времени суток! Прошу помощи в выводе бинарного дерева на экран (в консоль). Есть шаблон: ...

АТД деревья. Вывод бинарного дерева в консоль
Здравствуйте, нужна помощь! Возможно тема заезженная, но извеняйте не чего путнего не...

вывод бинарного дерева
Не могу понять в чем ошибка , функции описаны верно но на выводе хаотичные данные При вводе...

Вывод бинарного дерева
Помогите, пожалуйста, с программой. Нужно вывести бинарное дерево так, как выводится дерево...

2
7 / 4 / 14
Регистрация: 05.02.2014
Сообщений: 131
11.04.2015, 10:17 2
andi24,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//debug - функция отображения дерева, на входе дерево и кол-во элементов дерева
void us(FOREST *t,int u) 
{
    if (t==NULL) return; //Если дерево пустое, то отображать нечего, выходим
    else //Иначе
    {
        us(t->right,++u);//С помощью рекурсивного посещаем правое поддерево
        for (int i=0;i<u;++i) cout<<"|  ";
            cout<<t->point<<endl; //И показываем элемент
        u--;
    }
    us(t->left,++u); //С помощью рекурсии посещаем левое поддерево
}
0
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 2
12.04.2015, 10:15  [ТС] 3
root->point
что это?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2015, 10:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывод бинарного дерева
Как организовать вывод бинарного дерева?

Вывод бинарного дерева
Помогите пожалуйста, как вывести бинарное дерево в виде дерева? Само дерево и обход у меня есть, а...

Вывод бинарного файла на консоль
Имеется структура typedef struct { int n; char name; double price; ...

Реализация и вывод бинарного дерева
Помогите создать бинарное дерево и вывести его на экран по уровням. Заранее спасибо.

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

Заполнение бинарного файла и вывод в консоль
Привет всем! Помогите сказать что не так делаю. Ниже в коде я заполняю структуру данными и добавляю...


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

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

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