Я пытаюсь выполнить операцию поиска в BT. Например:Поиск в двоичном дереве (BT) Not BST
3 (Root)
5 1
6 2 0 8
Это мой БТ, и это код, который я написал для поиска.
Node* search(Node *root,int key)
{
if(root)
{
if(root->key==key)
{
cout<<root->key<<endl;
return root;
}
search(root->left,key);
search(root->right,key);
}
}
Сво предзаказ обход с условием, что, когда я нахожу нужный мне узел, я должен вернуть его. Например, если я вызываю поиск (корень, 2), поиск должен возвращать указатель Node * к узлу, содержащему значение 2.
Я считаю, что когда мой код возвращается после выполнения условия, он возвращается только к внешнему вызов n не выходит полностью. Например, если A вызывает B вызывает C, n, то есть возврат в C, он возвращает значение B, а не функцию, которая называется A.
Я не могу понять, как решить эту проблему , Я до сих пор совершенно новичок в рекурсии, поэтому мне сложно визуализировать вещи.
Любая помощь оценена!
Вы должны ' return search (root-> left, key) 'и' return search (root-> right, key); '. Кроме того, вы должны вызывать эти функции, если предыдущая операция (поиск в самом узле и 'search (root-> left, key)', соответственно) не нашел значение. –
Не ссылайтесь на код, размещенный где-то в другом месте. Поместите соответствующие разделы кода в свой вопрос, чтобы получить хороший ответ. –
Привет @Mohit Jain, Спасибо, я помню, что в моих будущих просьбах. – user2171983