Trouver le plus petit élément dans un binaire arbre de recherche - entrant dans la boucle infinie

voix
0

J'utilise la méthode récursive pour créer un arbre de recherche binaire. Mon objectif est de trouver l'élément le plus bas dans l'arbre. Voici mon code.

Insertion

node insert(node root, int value)
{
        if ( root == NULL )
        {
                return ((newNode(value)));
        }

        if ( root->info == value )
        {
                std::cout<<Duplicate entry found!<<std::endl;
                return root;
        }
        else if ( root->info > value )
        {
                root->lChild = insert(root->lChild,value);
        }
        else if ( root->info < value )
        {
                root->rChild = insert(root->rChild,value);
        }
        else 
                std::cout<<Some error has occurred.Time to debug!<<std::endl;

        return root;
}

MinValue Fonction

int minValue(node curPtr)
{
        node temp = curPtr;
        while ( curPtr )
        {
                temp = curPtr->lChild;
        }
        return (temp->info);
}

La raison pour laquelle (OMI) mon minValue () entre dans la boucle infinie est due à curPtr est pas toujours NULL. Comment puis-je faire NULL après avoir inséré les données en utilisant la fonction d'insertion ().

EDIT: Trouvé le bug..so stupide de ma part. Merci à Raymond

ci-dessous est le minValue modifié ()

int  minValue(node curPtr)
{
  node temp = curPtr;
  while ( temp->lChild )
  {
     temp = temp->lChild;
  }
  return (temp->info);
}

Merci Kelly.

Créé 03/09/2011 à 16:09
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
10

Vous modifiez jamais curPtr dans votre boucle.

Créé 03/09/2011 à 16:13
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more