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

Как вы учили деревья - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить сумму конечного отрезка ряда http://www.cyberforum.ru/cpp-beginners/thread708077.html
Помогите, плиз, как написать программу с помощью функций??? (в С++) Дано натуральное число N. Вычислить сумму конечного отрезка ряда:
C++ Как очистить массив выделеной памяти #include <iostream> #include <string.h> #include <cstdlib> using namespace std; int main() { int koltest; int kolday; char obmen; http://www.cyberforum.ru/cpp-beginners/thread708075.html
Построение бинарного дерева C++
Написать программу построения бинарного дерева с помощью связных структур и поиска в дереве при симметричном порядке обхода его. Если возможно с комментариями. Буду очень благодарен.
C++ Поиск по случайному деререву
Написать программу поиска по случайному дереву при обратном порядке обхода его. Дерево представлено с помощью массива. Если можно, то с комментариями. Заранее спасибо.
C++ Конечные автоматы с реализацией http://www.cyberforum.ru/cpp-beginners/thread708062.html
Есть такая работа,делал не я. http://f1.s.qip.ru/G1CCNne7.png http://f2.s.qip.ru/G1CCNne8.png вот реализация #include <iostream> using namespace std;
C++ Описать структуру с именем Student Вот задание . Описать структуру с именем Student, содержащую следующие поля: name – имя, group – группа, marks – успеваемость (массив из 4 элементов) 1)Написать программу, выполняющую ввод с клавиатуры данных в массив students, состоящий из 25 структур типа Student. 2)Записи должны быть упорядочены по возрастанию поля group. Вывести на дисплей имена и группы всех студентов, имеющих хотя бы... подробнее

Показать сообщение отдельно
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
05.12.2012, 23:51  [ТС]     Как вы учили деревья
Посмотрю.

Добавлено через 4 часа 45 минут
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
 
Посмотрите пожалуйста правильно ли я понял на щет деревьев в коментах написал что где значит 
 
#include <tchar.h>
//---------------------------------------------------------------------------
 
#pragma argsused
struct node                   //наша струра
{node *left;                //указатель на левый узел
node *right;                   //указатель на правыйузел
int data;                      //даные
 
};
node *root=NULL;              //никакого узла небыло создано петому указатель на корень 0
void add(node **r,int d)         //node **r - указатель на корневой указатель int d - даные
{
if((*r)==NULL)      //если укзатель елемент структруы == 0,
 
                        //а так оно и есть по тому что мы его просто обявили
 
{(*r)=new node;   //создаем указатель на новый елемнт структуры
 
                         //(то есть выделяем память под новый указатель)
 
(*r)->data=d;             //это будет данным числом корнеаого елемента таким образом
                              //получаеться мы корневому елемнту задаем значение на которое он указывает
 
(*r)->left=(*r)->right=NULL;           //присваиваем указателям нулевые адреса по скольку
                                //по скольку больше никаких даных не добавлялось то это начальние адреса
return; //ето выход из if-a
}
if(d>(*r)->data)add(&(*r)->left,d);//проверяем значение, указатель указывает
                               //на адрес этого значения
 
else
 
add(&(*r)->left,d);     //аналогично
}
void print(node *n,int d)     //печать здесь просто указатель по скольку не производиться
                              //смена указателя
 
{if(n==NULL)              //если етот указатель больше ниначто не указывает,то
 
return;                        //выходим
 
else
 
{print(n->left,d);              //рекурсивный вызов
 
cout<<n->data<<endl;     //вывод всех даных.
 
}
 
print(n->right,++d);  //рекурсивный вызов
 
}
 
int main()
{    int n,s;
cin>>n;
for(int i=0;i<n;i++)
{cin>>s;
add(&root,s);                     //передаем даные, то есть корневым елементом будет первый введёный
                                        //елемнт в цыкле.
}
print(root,0); //вот только почему здесь 0 есть? 
getch();
    return 0;
}
//---------------------------------------------------------------------------
 
Текущее время: 13:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru