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

Шаблон класса "Бинарное дерево" с насследованием

07.06.2015, 16:33. Показов 2440. Ответов 2
Метки нет (Все метки)

Здравствуйте! Есть задание сделать шаблон класса "Бинарное дерево".
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
template <class X> 
class Node{
    X value;
    Node *left;
    Node *right;
 public:
      Node(){
          value=0;
          left=NULL;
          right=NULL;
      }
      Node(X valu){
        value=valu;
        left=NULL;
        right=NULL;
      }
 
    void SetLeft(Node *ptr){
        left=ptr;
    }
 
    void SetRight(Node *ptr){
        right=ptr;
    }
 
    void SetValue(X valu){
        value=valu;
    }
 
    X GetValue(){
        return value;
    }
 
    Node *GetLeft(){
        return left;
    }
 
    Node *GetRight(){
        return right;
    }
 
    Node Get(){
        return *this;
    }
};
 
class Tree : public Node <class X>{
 public:
    void Add(Node *root, X &data){
        if(data==root->GetValue()){
            cout<<endl<<"This is a repeat. Can't add."<<endl<<endl;
            return;
        }
        if(data < root->GetValue()){
            if(!(root->GetLeft())){
                Node* n = new Node;
                root->SetLeft(n);
                root->GetLeft()->SetValue(data);
                root->GetLeft()->SetLeft(NULL);
                root->GetLeft()->SetRight(NULL);
                return;
            }
            else Add(root->GetLeft(), data);
        }
        else{
            if(!(root->GetRight())){
                Node* n = new Node;
                root->SetRight(n);
                root->GetRight()->SetValue(data);
                root->GetRight()->SetLeft(NULL);
                root->GetRight()->SetRight(NULL);
 
                return;
            }
            else Add(root->GetRight(), data);
        }
    }
 
    void Show(Node *root, int height){
        if(!root) return;
 
        Show(root->GetRight(), height+1);
        for(int i=0; i<height; i++) cout <<"\t";
        cout<<root->GetValue()<<endl<<endl;
        Show(root->GetLeft(), height+1);
    }
 
    void show_poslidovn(Node *tree){
        if(tree==NULL) return;
 
        cout<<tree->GetValue()<<", ";
        show_poslidovn(tree->GetLeft());
        show_poslidovn(tree->GetRight());
    }
 
    void show_zvorotn(Node *tree){
        if(tree==NULL) return;
 
        show_zvorotn(tree->GetLeft());
        show_zvorotn(tree->GetRight());
        cout<<tree->GetValue()<<", ";
    }
 
};
 
int main(){
    int j=1;
    Node <int> data;
 
    Tree *MyTree=new Tree;
    char answer='y';
 
    cout<<endl<<"Node["<<j<<"] = ";
    cin>>data;
    MyTree->SetValue(data);
    j++;
 
    while(answer=='y'){
        cout<<"Write another Node? (y/n): ";
        cin>>answer;
 
        if(answer=='y'){
            cout<<"Uzel["<<j<<"] = ";
            cin>>data;
            MyTree->Add(MyTree, data);
            j++;
        }
        else if(answer=='n'){
            break;
        }
        else cout<<"Try again!"<<endl<<endl;
    }
 
    MyTree->Show(MyTree, 0);
 
    cout<<endl<<"Posledovatelnij obhod: ";
    MyTree->show_poslidovn(MyTree);
    cout<<endl<<endl<<"Obratnij obhod: ";
    MyTree->show_zvorotn(MyTree);
 
    getch();
    return 0;
}

Проблемы в моментах указаны на скринах.
Надеюсь на вашу попощь.
0
Миниатюры
Шаблон класса "Бинарное дерево" с насследованием   Шаблон класса "Бинарное дерево" с насследованием   Шаблон класса "Бинарное дерево" с насследованием  

Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2015, 16:33
Ответы с готовыми решениями:

Классы "Бинарное дерево" и "Узел" в одном приложении
Компилятор разбушевался((( Пробовала сделать вместо одного класса два класса(Дерево и узел)....

Шаблон класса «бинарное дерево», добавление элементов
Написал код: #include &lt;iostream&gt; using namespace std; class Aviobilet { public: char...

Бинарное дерево поиска: "Библиотека", поиск по автору книги
Есть бинарное дерево поиска.Дерево представляет собой подобие библиотеки.Нужно осуществить поиск по...

Бинарное дерево (связный список "сыновей")
Здравствуйте, помогите, пожалуйста, с программой.Нужно реализовать бинарное дерево, представленное...

2
0 / 0 / 0
Регистрация: 07.06.2015
Сообщений: 12
07.06.2015, 16:44  [ТС] 2
Проблему решил, прошу прошщение за беспокойство.
0
0 / 0 / 0
Регистрация: 24.12.2018
Сообщений: 2
30.05.2019, 21:25 3
Shizi_kroc, можете помочь с Шаблоном класса "Бинарное дерево"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2019, 21:25

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

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

Ошибка при компиляции:"C2955 "Tree": для использования класс шаблон требуется список аргументов шаблон"
Есть класс бинарного дерева, в нем структура. Класс - Tree, структура - list(листик, а не список)....

Ошибка в программе, где создается шаблон класса "стек"
Задача:Гаражная стоянка имеет одну стояночную полосу, причем единственный въезд и единственный...

Шаблон класса "Стек" на основе массива
Напишите шаблон класса &quot;Стек&quot;на основе массива.Предусмотрите функции добавление и извлечения...

Ошибка "Шаблон класса уже определен"
template &lt;class T&gt; struct Node //Структура, являющаяся звеном списка ...

Написать шаблон для класса "Рабочий"
Всем доброго время суток! У меня возникла следующая проблема. Препод дал задание: написать шаблон...


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

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

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