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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Переставить в заданных порядках все элементы s-ой строки и k-ого столбца матрицы http://www.cyberforum.ru/cpp-beginners/thread563173.html
Определить и протестировать класс CM, содержащий в качестве компонентов указатель на «динамический двумерный массив» (матрицу А) и его размеры (m-число строк и n число столбцов), а также конструктор для инициализации «массива» и методы для заданной обработки «динамического двумерного массива» - матрицы. Все компоненты должны иметь статус private. Элементы матрицы – вещественные числа от 0,001 до...
C++ Необходимо выбрать структуру (список, К-Ч дерево и т.д) для хранения данных Решил описать задачку здесь, может кому тоже интересно будет, такие не каждый день на выдумывание хитрых алгоритмов дают, это не скучная задачка вроде моих универовских "напиши односвязный список" да напиши класс студенты ... Советую дочитать до конца если вы тоже хотите по-выдумывать что-то хитрое, задание очень интересное :) Есть задачка. Смысл её в том что есть куча классов геом. фигур. У... http://www.cyberforum.ru/cpp-beginners/thread563163.html
Написать программу на с++, которая считывает текст из файла.. C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел. Что-то вот получилось,но не правильно работает) помогите пожалуйста #include <iostream.h> #include <stdio.h> #include <fstream.h> #include <stdio.h> #include <ctype.h> #include <conio.h> #include <string.h>
C++ Массив и наследование,
создать базовый класс Array, в котором определить поле-массив подходящего типа и поле для хранения количества элементов у текущего объекта-массива. Реализовать конструктор инизиализации, задающий количество элементов и начальное значение(по умолчанию 0). Реализовать методы доступа к отдельному элементу, перегрузив операцию индексирования.При этом должна выполняться проверка индекса на...
C++ Двусвязный список "Факультет" http://www.cyberforum.ru/cpp-beginners/thread563121.html
Разработать программу, реализующую алгоритм двусвязного списка (20 элементов). В качестве элемента списка выбрать структуру: Код (ключ) Название Фамилия И.О. декана К-во кафедр К-во преподавателей Предусмотреть заполнение списка из файла (подготовить файл на 20 элементов). Заполнение списка с начала: a) с консоли (циклически) b) из файла (выбор файла, тек....
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;
 
}
 
Текущее время: 20:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru