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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти максимальное количество заявок, которые можно удолетворить http://www.cyberforum.ru/cpp-beginners/thread91186.html
Есть n заявок на проведение занятий в 1й аудитории. два различных занятия не могут пересекаться по времени. каждая заявка содержит время начала s и время оконачания занятия t необходимо найти макс кол-во заявок которую можно удолетворить
C++ Рекурсивное вычисление функции Функция f(n) определяется рекурсивно: f(2*n)=f(n),f(2*n+1)=f(n)+f(n+1), f(0)=0,f(1)=1.написать программу вычисляющую функцию f(n) http://www.cyberforum.ru/cpp-beginners/thread91183.html
Найти в последовательности все слова, из которых могла бы получиться другая последовательность C++
Добрый вечер, нужна помощь в решении задачи. Даны символы а1....а10, натуральное число n, символы s1,...., sn. Будем рассматривать слова, входящие в последовательность s1,...., sn, считая, что среди символов а1....а10 нет пробелов, и поэтому последовательность а1....а10 может рассматриваться как одно слово, в словах могут встретиться ошибки: -заменена одна буква. Требуется найти в s1,....,...
посчитать интеграл...найти ошибку в программе C++
Написал прогу, работает, но препод сказал что неправильно, в чём ошибка-то ? Собственно задание: написать программу, которая считает интеграл 1-x*x на интервале методом Монте-Карло (на лекциях этой темы не было). #include <stdlib.h> #include <stdio.h> #include <time.h> double func(double x) { return 1-x*x;
C++ ошибка при использовании delete http://www.cyberforum.ru/cpp-beginners/thread91148.html
И снова здравствуйте! Пишу раз третий.Я уже готов убицца ап сцену изза этого delete.Я не понимаю что не так делаю: class CMenu { char* Title; char* End; public: CMenu(char*, char* ); ~CMenu();
C++ массив Задано два вектора A=(a1,a2,a3,a4) и B=(b1,b2,b3,b4,b5), где a1=0.1; a2=a1+2.1; a3=a1-0.8; a4=a2-0.8 b1=a1*a2; b2=a2*a3; b3=a1*a3; b4=5*a1; b5=b4-b2 найти Q=∑_(i=1)^4▒〖(a_i 〗 ∏_(j=1)^5▒b_j ) подробнее

Показать сообщение отдельно
Андрейка
410 / 214 / 24
Регистрация: 25.03.2009
Сообщений: 716
31.01.2010, 00:14     Бинарное дерево
[CN]Defender,
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
#include<iostream.h>
struct  node
{
  int Key;
  int Count;
  node *Left;
  node *Right;
};
 
class TREE
{
  private:
    node *Tree; //Указатель на корень дерева.
    void Search (int,node**);
  public:
    TREE() {Tree=NULL;}
    node** GetTree () {return &Tree;} //Получение вершины дерева.
    void BuildTree ();
    void CleanTree (node **);
    void ObhodEnd (node **);
    void ObhodLeft (node **);
    void ObhodBack (node **);
    void Vyvod (node**,int);
    int Height (node**);
};
 
void main ()
{
  TREE A;
 
  A.BuildTree ();
  cout<<"\nВывод дерева:\n";
  A.Vyvod (A.GetTree(),0);
  cout<<"\nВысота дерева:"<<A.Height(A.GetTree())<<endl;
  cout<<"\nЛевосторонний обход дерева: ";
  A.ObhodLeft (A.GetTree());
  cout<<"\nКонцевой обход дерева: "; A.ObhodEnd (A.GetTree());
  cout<<"\nОбратный обход дерева: "; A.ObhodBack (A.GetTree());
  A.CleanTree (A.GetTree());
}
 
void TREE::BuildTree ()
// Построение бинарного дерева (рекурсивный алгоритм).
// Tree - указатель на корень дерева.
{
  int el;
 
  cout<<"Вводите ключи вершин дерева ...\n";
  cin>>el;
  while  (el!=0)
  { Search (el,&Tree); cin>>el; }
}
 
void TREE::Search (int x,node **p)
//  Поиск вершины с ключом x в дереве со вставкой
//             (рекурсивный алгоритм).
// *p - указатель на корень дерева.
{
  if  (*p==NULL)
  {// Вершины в дереве нет; включить ее.
    *p = new(node);
    (**p).Key = x;     (**p).Count = 1;
    (**p).Left = NULL; (**p).Right = NULL; }
  else
    if  (x<(**p).Key) Search (x,&((**p).Left));
    else
      if  (x>(**p).Key) Search (x,&((**p).Right));
      else  (**p).Count = (**p).Count + 1;
}
 
void TREE::ObhodLeft (node **w)
//Левосторонний обход дерева.
//*w - указатель на корень дерева.
{
  if  (*w!=NULL)
  {
    cout<<(**w).Key<<" ";
    ObhodLeft (&((**w).Left));
    ObhodLeft (&((**w).Right));
  }
}
 
void TREE::ObhodEnd (node **w)
//Концевой обход дерева.
//*w - указатель на корень дерева.
{
  if  (*w!=NULL)
  { ObhodEnd (&((**w).Left));
    ObhodEnd (&((**w).Right));
    cout<<(**w).Key<<" "; }
}
 
void TREE::ObhodBack (node **w)
//Обратный обход дерева.
//*w - указатель на корень дерева.
{
  if  (*w!=NULL)
  { ObhodBack (&((**w).Left));
    cout<<(**w).Key<<" ";
    ObhodBack (&((**w).Right)); }
}
 
void TREE::CleanTree (node **w)
//Очистка дерева.
//*w - указатель на корень дерева.
{
  if  (*w!=NULL)
  { CleanTree (&((**w).Left));
    CleanTree (&((**w).Right));
    delete *w; }
}
 
void TREE::Vyvod (node **w,int l)
//Изображение дерева *w на экране дисплея
//          (рекурсивный алгоритм).
//*w - указатель на корень дерева.
{
  int i;
 
  if  (*w!=NULL)
  { Vyvod (&((**w).Right),l+1);
    for  (i=1; i<=l; i++) cout<<"   ";
    cout<<(**w).Key<<endl;
    Vyvod (&((**w).Left),l+1); }
}
 
int TREE::Height (node **w)
//Определение высоты бинарного дерева.
//*w - указатель на корень дерева.
{
  int h1,h2;
  if  (*w==NULL) return (-1);
  else
  {
    h1 = Height (&((**w).Left));
    h2 = Height (&((**w).Right));
    if  (h1>h2) return (1 + h1);
    else  return (1 + h2);
  }
}
лови, смотри - эт не мой код если что.
 
Текущее время: 10:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru