Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Бинарные деревья: создание, отображение, поиск узлов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переставить в заданных порядках все элементы s-ой строки и k-ого столбца матрицы http://www.cyberforum.ru/cpp-beginners/thread563173.html
Определить и протестировать класс CM, содержащий в качестве компонентов указатель на «динамический двумерный массив» (матрицу А) и его размеры (m-число строк и n число столбцов), а также конструктор...
C++ Необходимо выбрать структуру (список, К-Ч дерево и т.д) для хранения данных Решил описать задачку здесь, может кому тоже интересно будет, такие не каждый день на выдумывание хитрых алгоритмов дают, это не скучная задачка вроде моих универовских "напиши односвязный список" ... http://www.cyberforum.ru/cpp-beginners/thread563163.html
Написать программу на с++, которая считывает текст из файла.. C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел. Что-то вот получилось,но не правильно работает) помогите пожалуйста #include...
C++ Массив и наследование,
создать базовый класс Array, в котором определить поле-массив подходящего типа и поле для хранения количества элементов у текущего объекта-массива. Реализовать конструктор инизиализации, задающий...
C++ Двусвязный список "Факультет" http://www.cyberforum.ru/cpp-beginners/thread563121.html
Разработать программу, реализующую алгоритм двусвязного списка (20 элементов). В качестве элемента списка выбрать структуру: Код (ключ) Название Фамилия И.О. декана К-во...
C++ Файлы Из текстового файла выбросить все пробельные символы. Новый файл не создавать. Помогите пожалуйста решить эту задачу, в файлах не разбираюсь, так как когда прослушала лекцию. Очень сильно нуждаюсь... подробнее

Показать сообщение отдельно
vadiprog
2 / 2 / 0
Регистрация: 06.11.2011
Сообщений: 108
02.05.2012, 14:18  [ТС]
Вот код на восходящий порядок прохождения

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
#include <iostream>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
template<typename T> struct vertex{
T value;
vertex* left;
vertex* right;
};
 
template<typename T> void insert(vertex<T>* head, T element){
if(head->value == element) 
return;
else{
if(head->value < element){
if(head -> left == NULL){
head -> left = new vertex<T>;
head -> left -> value = element;
head -> left -> left = NULL;
head -> left -> right = NULL;
}
else{
head = head->left;
insert(head,element);
}
}
else
if(head->value > element){
if(head -> right == NULL){
head -> right = new vertex<T>;
head -> right -> value = element;
head -> right -> left = NULL;
head -> right -> right = NULL;
}
else{
head = head->right;
insert(head,element);
} 
}
}
 
}
template<typename T> int find (vertex<T>* head, T element, int *l)
{
if(head==NULL){
*l=0;
return *l;
}
if(head->value==element) return *l;
 
if (head->left) {
*l+=1;
find(head->left, element, l);
}
 
if (head->right) {
l+=1; 
find(head->right, element, l);
}
}
 
template<typename T> void show_bin_tree (vertex<T>* head, int n) 
{ 
if (head->left) 
show_bin_tree(head->left, n+1); 
 
for (int i = 0; i < n; i++) cout << " "; 
cout << head->value << '\n'; 
 
if (head->right) 
show_bin_tree(head->right, n+1); 
}
 
int main(){
 
vertex<char>* head = new vertex<char>;
head->left = NULL;
head->right = NULL;
srand(time(NULL));
head->value = (char)(rand()%('z'-'a')+'a');
 
 
const int max=9;
char arr[max], chr; int n=0;
bool b;
 
while (n<9){
b=true;
 
chr=(char)(rand()%('z'-'a')+'a');
 
for (int i=0; i<=n; i++){
if (arr[i]==chr){
b=false;
}
}
 
if (b){
arr[n]=chr;
++n;
}
}
 
 
for(int i = 0; i<9; i++)
insert(head,arr[i]);
 
cout << endl;
int l=0;
show_bin_tree (head, l);
 
char ch;
cin >> ch;
 
if(find(head, ch, &l))
cout << "Element found " << l;
else cout << "Element not found";
 
system("pause");
return 0;
 
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru