0
votes

Trouver l'élément dans un arbre de recherche binaire ne fonctionne que lorsque vrai

Lorsque j'envoie une requête à ma BST pour revenir à la valeur AT / F lors de la constate si l'élément est trouvé ou non, cela fonctionne correctement lorsque cela est vrai, mais provoque un crash retardé lorsque l'élément n'est pas dans la BST.

Je ne peux pas comprendre cela pour la vie de moi.

.cpp xxx

principal xxx

merci.


0 commentaires

3 Réponses :


1
votes

Vous n'avez aucun moyen d'arrêter la récursion dans FINDHELPER , vous avez donc éventuellement le courant de désarférence lorsqu'il s'agit d'une nullptr.


0 commentaires

3
votes

Le problème est que vous ne vérifiez jamais de voir si vous rencontrez un nullptr.

Quelque chose comme ça résoudrait le problème: P>

bool BinarySearchTree::findHelper(Node* current, std::string title){

    if (current->title.compare(title) == 0)
        return 1;

    if (current->title.compare(title) < 0 && current->left != nullptr)
    {
        return findHelper(current->left, title);
    }
    else if(current->right != nullptr)
    {
        return findHelper(current->right, title);
    }
    return 0;
}


3 commentaires

Ahh. Ça a du sens. Je vais travailler dessus. Merci.


Je ne savais pas que vous avez posté le code de suivi. Cela résolu certainement. Je vais vérifier cette réponse lorsque la minuterie me laisse. Merci beaucoup.


Aucun problème! Je suis heureux d'avoir pu aider.



4
votes

Lorsque vous récupérez, vous devez retourner tout ce que l'appel récursif se retourne, pas 0. Vous ne renvoyez que 0 si vous atteignez la fin de l'arborescence. XXX


0 commentaires