Исправка кода бинарного дерева

129
26 февраля 2018, 01:45
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <string>
using namespace std;
int tabs = 0;
queue <int *> myqueue;
struct Branch {
  int Data;
  Branch *LeftBranch;
  Branch *RightBranch;
};
void addToTree(int aData, Branch *&aBranch);
void print(Branch *aBranch);
int find(Branch *Root, int *N);
int main() {
  int* N = new int;
  cout << "Enter number for find in tree" << endl;
  cin >> *N;
  cin.get();
  Branch *Root = 0;
  int* arr = new int[15];
  srand(time(NULL));
  for (int i = 0; i < 15; i++) {
    arr[i] = rand() % 198 - 99;
  }
  for (int i = 0; i < 15; i++) {
    addToTree(arr[i], Root);
  }
  find(Root, N);
  print(Root);
  return 0;
}
void addToTree(int aData, Branch *&aBranch) {
  if (!aBranch) {
    aBranch = new Branch;
    aBranch->Data = aData;
    aBranch->LeftBranch = 0;
    aBranch->RightBranch = 0;
    return;
  }
  else if (aBranch->Data > aData) {
    addToTree(aData, aBranch->LeftBranch);
  }
  else {
    addToTree(aData, aBranch->RightBranch);
  };
}
void print(Branch *aBranch) {
  if (!aBranch) return;
  tabs++;
  print(aBranch->LeftBranch);
  for (int i = 0; i < tabs; i++) cout << " ";
  cout << aBranch->Data << endl;
  print(aBranch->RightBranch);
  tabs--;
  return;
}
int find(Branch *Root, int n) {
  if (Root->Data % n == 0) {
    myqueue.push(&Root->Data);
    return 0;
  }
  if (Root->LeftBranch->Data < n) {
    return find(Root->LeftBranch, n);
  }
  else {
    return find(Root->RightBranch, n);
  }
  return 0;
}

Помогите исправить код.

Answer 1

Сигнатура функции int find(Branch *Root, int *N); не соответствует сигнатуре реализованной функции int find(Branch *Root, int n). Соответственно компилятор не находит определения подходящей функции find и ругается. Объявление и реализацию можно было бы и не разносить.

Answer 2

Вы объявляете функцию

int find(Branch *Root, int *N);

и вызываете именно ее!

find(Root, N);  // N - int*

Но реализуете совсем другую функцию...

int find(Branch *Root, int n) {
    if (Root->Data % n == 0) {
    ...

Согласуйте объявление и определение...

READ ALSO
Как работает live-стрим в YouTube?

Как работает live-стрим в YouTube?

Прямая трансляция пишется на диск и при этом раздаётся в браузер в реальном времени всем, кто её запросил

142
Разворот картинки java

Разворот картинки java

Что то не получается развернуть картинку

212
Высчитать возраста пользователя в днях java

Высчитать возраста пользователя в днях java

Задача: Надо рассчитать возраст пользователя, в днях, часах, минутахВводится дата рождения и сегодняшняя дата

261
создание jar архива с текстовыми файлами

создание jar архива с текстовыми файлами

При создании джава-архива для проекта содержащего текстовые файлы, текстовые файлы не добавляются в джава-аржив(лежат рядом с папкой src)

199