бинарное дерево поиска "содержит" функцию



Попытка создать функцию contains для бинарного дерева.



Функция выглядит следующим образом:



    bool contains(bt_node* top, int data) {
if (top == NULL) return false;
else {
if (data == top->data) return true;
else if (data < top->data) contains(top->left, data);
else if (data > top->data) contains(top->right, data);
}
}


Функция возвращает false для значения, которое на самом деле находится в дереве. Кто-нибудь может помочь?



Спасибо,



Макс

492   2  
c

2 ответов:

Вы забыли вернуть значение рекурсивных вызовов в contains. Таким образом, возвращаемое значение функции не определено. Измените его на следующий, чтобы он работал:

bool contains(bt_node* top, int data) {
  if (top == NULL) return false;
  else {
    if (data == top->data)
      return true;
    else if (data < top->data)
      return contains(top->left, data);      //you forgot to return the value
    else if (data > top->data)
      return contains(top->right, data);
  }
}

Вы могли бы сделать немного лучше, хотя:

bool contains(bt_node* top, int data) {
    if (top == NULL) return false;
    if (data == top->data) return true;
    if (data < top->data)  return contains(top->left, data);    
    return contains(top->right, data);
}

Comments

    Ничего не найдено.