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

Ошибка в методе обрабатывающем бинарное дерево - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обработка массива/С++ для начинающих http://www.cyberforum.ru/cpp-beginners/thread1140370.html
Сформувати випадковим чином масив із 20 елементів. Сформувати новий масив так, щоб кожен n -ий елемент цього масиву дорівнював сумі квадратів (n-1) -го та (n+1) -го елементів початкового масиву, якщо хоча б один із них від’ємний, або добутку (n-1) -го та (n+1) -го елементів початкового масиву в іншому випадку. Перший і двадцятий елементи залишити такими ж, як у початковому масиві....
C++ Для каждого слова определить количество вхождений в исходном тексте Помогите, пожалуйста: Задан произвольный текст. Слова в тексте могут разделяться одним или несколькими пробелами, знаками пунктуации и переходами на следующую строку. Каждое слово размещается в одной и той же строке (переносы слов не используются). Выполнить следующие действия: * Выделить каждое отдельное слово, входящее в текст. * Для каждого слова определить количество вхождений в... http://www.cyberforum.ru/cpp-beginners/thread1140369.html
Обнулить элементы вектора через __asm C++
Хочу обнулить элементы вектора через __asm #include <vector> #include <iostream> using namespace std; void main() { vector<vector<int>> v(2, vector <int> (3, 1));
Ругается на неоднозначный вызов перегруженной функции C++
Делаю все по примерам не могу понять в чем ошибка. Уверен что ошибка элементарная. Ругается на неоднозначный вызов перегруженной функции. Причем на все функции( #include <iostream> #include <cmath> using namespace std; #define Pi 3.14 int main() { int T; double P; int r,t,Y,R,A; cout<<"T = "; cin>>T;
C++ Удаление элемента списка и всего списка http://www.cyberforum.ru/cpp-beginners/thread1140351.html
Компилируется, но не работает. Что и как исправить? #include <cstdlib> #include <iostream> #include <cstring> #define M 5 using namespace std; struct A { char key ;
C++ предлоги помогите пожалуйста! Есть предложение в нем надо подсчитать кол-во предлогов! Как это сделать, и что для этого надо почитать подробнее

Показать сообщение отдельно
KobaEugeneA
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 166
06.04.2014, 17:12     Ошибка в методе обрабатывающем бинарное дерево
Есть метод обрабатывающий бинарное дерево и состовляющий двумерный массив указателей на листья, так что в первой строке - указатель на root, во второй - листья второго уровня и так далее. Вот сам метод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void view_alternative(tree* root){
  tree* b[50][50];
  for(int i = 0; i < 50; i++)
    for(int j = 0; j < 50; j++)
      b[i][j] = NULL;
  int n = 0, m = 1, m1;
  b[0][0] = root;
  while(m != 0){
    m1 = m;
    m = 0;
    for(int i = 0; i < m1; i++){
      if(b[n][i] -> left != NULL){
    b[n + 1][m] = b[n][i] -> left;
    m++;
      }
      if(b[n][i] -> right != NULL){
    b[n + 1][m] = b[n][i] -> right;
    m++;
      }
      n++;
    }
  }
}
Почти при любых раскладах выдаёт: Segmentation fault (core dumped)
В чём ошибка может быть? Вот программа составляющая дерево, но она точно работает правильно:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <stdio.h>
struct tree{int a; tree* left; tree* right;};
using namespace std;
tree* find_place(tree*, int);
void view(tree*, int);
void view_alternative(tree*);
main(){
  int n;
  tree* root = new tree;
  cin >> n;
  int* a = new int[n];
  for(int i = 0; i < n; i++)
    cin >> a[i];
  root -> a = a[0];
  root -> left = NULL;
  root -> right = NULL;
  tree* eL;
  for(int i = 1; i < n; i++){
    eL = find_place(root, a[i]);
    eL -> a = a[i];
    eL -> left = NULL;
    eL -> right = NULL;
  }
  view_alternative(root);
}
tree* find_place(tree *root, int a){
  if(root -> a > a){
    if(root -> left == NULL){
      root -> left = new tree;
      return root -> left;
    }
    else
      return find_place(root -> left, a);
  }
  else{
    if(root -> right == NULL){
      root -> right = new tree;
      return root -> right;
    }
   else
     return find_place(root -> right, a);
  }
}


Добавлено через 1 час 56 минут
Сколько не смотрю, вообще не могу понять в чем ошибка то.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru