EDIT: проблема, указанная ниже, была решена. Но у меня был дополнительный вопрос. Иногда мой профессор не возвращается при рекурсивном звонке. Как мне узнать, когда мне следует вернуть рекурсивный вызов, а когда я должен просто вызвать функцию рекурсивно?
Я пишу рекурсивную функцию, чтобы увидеть, содержит ли двоичное дерево поиска определенный ключ. Фраза «Key Match Contains» печатается, значит, ключ найден, но функция по-прежнему возвращает false. Я заметил, что он возвращает false при поиске левых поддеревьев. Есть идеи, что происходит не так? Заранее благодарим.
Внутренний метод:
template <typename K>
bool Multiset<K>::Contains(std::unique_ptr<Node> &n, const K &key) {
if (!n) {
std::cout << "Contains returns null" << std::endl;
return false;
}
if (n->key == key) {
std::cout << "Key match Contains" << std::endl;
return true;
} else if (key < n->key) {
Contains(n->left, key);
}
return Contains(n->right, key);
}
Внешний метод:
template <typename K>
bool Multiset<K>::Contains(const K &key) {
return Contains(root, key);
}