бинарное дерево поиска "содержит" функцию
Попытка создать функцию 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 для значения, которое на самом деле находится в дереве. Кто-нибудь может помочь?
Спасибо,
Макс
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