Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.68
Mikooo
2 / 2 / 2
Регистрация: 24.02.2011
Сообщений: 74
#1

бинарное дерево - C++

01.03.2011, 16:19. Просмотров 4002. Ответов 6
Метки нет (Все метки)

С помощю бинарного дерева нужна сделать программу,,любую (главное что на экран выводило)
http://www.cyberforum.ru/cpp-beginners/thread1406600.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2011, 16:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос бинарное дерево (C++):

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

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

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

Бинарное дерево
Народ помогите. На С++ нада написать программу бинарного дерева ...

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

6
volovzi
268 / 170 / 11
Регистрация: 14.03.2010
Сообщений: 501
01.03.2011, 16:40 #2
Ну так сделай, кто ж мешает.
0
Mikooo
2 / 2 / 2
Регистрация: 24.02.2011
Сообщений: 74
01.03.2011, 16:42  [ТС] #3
vot immenno ne mogu ,pomogi
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
01.03.2011, 16:52 #4
Цитата Сообщение от Mikooo Посмотреть сообщение
нужна сделать программу,,любую (главное что на экран выводило)
Вот в закромах пылилось:
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
171
172
173
174
175
176
177
178
179
#include <iostream>
#include <string>
 
template <typename T>
class Bintree {
    class Node {
        friend class Bintree;
        T * value;
        Node * parent;
        Node * left;
        Node * right;
        Node(const T & val, Node * p = 0) : parent(p), left(0), right(0) {
            value = new T(val);
        }
        ~Node(){
            delete value;
        }
    };
 
    Node * root;
 
    bool insertNode(const T & val, Node * & n, Node * p = 0){
        if ( ! n ){
            n = new Node(val, p);
            return true;
        }
        else if ( *(n->value) > val )
            return insertNode(val, n->left, n);
        else if ( *(n->value) < val )
            return insertNode(val, n->right, n);
        else
            return false;
    }
 
    void insertTree(Node * & n, Node * t){
        if ( ! n || ! t )
            return;
        insertTree(n, t->left);
        insertTree(n, t->right);
        insertNode(*(t->value), n);
    }
 
    void delTree(Node * n){
        if ( ! n )
            return;
        delTree(n->left);
        delTree(n->right);
        delete n;
        n = 0;
    }
 
    Node * findNode(const T & val, Node * n) {
        if ( ! n )
            return 0;
        else if ( *(n->value) == val )
            return n;
        else if ( *(n->value) > val )
            return findNode(val, n->left);
        else
            return findNode(val, n->right);
    }
 
    void dumpNodes(std::ostream & ost, Node * n, std::string delim = " ") {
        if ( ! n )
            return;
        dumpNodes(ost, n->left, delim);
        ost << *(n->value) << delim;
        dumpNodes(ost, n->right, delim);
    }
 
    // закрытый конструктор копирования
    Bintree(const Bintree &);
    Bintree operator = (const Bintree &);
 
public:
    Bintree() : root(0) {}
    ~Bintree(){
        delTree(root);
    }
 
    void add(const T & val){
        if ( ! insertNode(val, root) )
            throw ( std::string("Value exists!") );
    }
 
    void remove(const T & val){
        Node * n = findNode(val, root);
        if ( ! n ){
            throw ( std::string("Value not found!") );
        }
        else if ( n == root ){
            if ( ! n->right ){
                Node * nroot = n->left;
                delete root;
                if ( root = nroot )
                    root->parent = 0;
            }
            else {
                Node * nroot = root->right;
                Node * nleft;
                for ( nleft = nroot; nleft->left; nleft = nleft->left )
                    ;
                nleft->left = root->left;
                delete root;
                root = nroot;
                root->parent = 0;
            }
        }
        else {
            Node * & p = n->parent;
            if ( n == p->left )
                p->left = 0;
            else
                p->right = 0;
            insertTree(p, n->left);
            insertTree(p, n->right);
            delTree(n);
        }
    }
 
    void dump(std::ostream & ost, std::string delim = " "){
        dumpNodes(ost, root, delim);
    }
 
    bool empty(){
        return ! root;
    }
};
 
int menu(){
    int ret;
    std::cout << "\n1 - add value"
            << "\n2 - remove value"
            << "\n3 - dump values"
            << "\n0 - exit"
            << "\n> ";
    std::cin >> ret;
    return ret;
}
 
int main(){
    Bintree<double> bt;
    int m;
    double val;
 
    while ( m = menu() ){
        switch ( m ){
        case 1 :
            std::cout << "Value to add: ";
            std::cin >> val;
            try {
                bt.add(val);
            }
            catch ( std::string err ){
                std::cerr << "\aError: " << err << std::endl;
            }
            break;
        case 2 :
            std::cout << "Value to remove: ";
            std::cin >> val;
            try {
                bt.remove(val);
            }
            catch ( std::string err ){
                std::cerr << "\aError: " << err << std::endl;
            }
            break;
        case 3 :
            bt.dump(std::cout);
            std::cout << std::endl;
            break;
        default :
            std::cerr << "\aWrong command!" << std::endl;
            break;
        }
    }
 
    return 0;
}
1
Mikooo
2 / 2 / 2
Регистрация: 24.02.2011
Сообщений: 74
01.03.2011, 16:57  [ТС] #5
fatal error C1083: Cannot open include file: 'TreeNode.h': No such file or directory
Error executing cl.exe.
vot takyu owibky vidaet
0
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
01.03.2011, 17:08 #6
Mikooo, во-первых не пишите транслитом - многих это раздражжает, а во-вторых разберитесь как-нибудь с тем, какой проект Вы создаёте и какие файлы в него включаете.
Вот отсюда скопировал:
бинарное дерево
0
Mikooo
2 / 2 / 2
Регистрация: 24.02.2011
Сообщений: 74
01.03.2011, 17:40  [ТС] #7
aa spasbo ogromnoe!!!

Добавлено через 29 минут
С помощю бинарного дерева нужна сделать программу,которое ввиде дерево показывает имя всех(сын,отец,дедушка,прадедушка,прапрадедушка и т. д)

 Комментарий модератора 
Не нужно заводить новые темы про то же самое. Лучше бы задание сразу написали.
0
01.03.2011, 17:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2011, 17:40
Привет! Вот еще темы с решениями:

Бинарное дерево
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; int last; ...

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

Бинарное дерево
Только начал изучать тему &quot;деревья&quot;. Подскажите в чем ошибка)#include...

Бинарное дерево
Столкнулся с уникальной проблемой от которой волосы дыбом встают. Вот код,...


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

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

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