Trovare l'elemento più piccolo in un Binary Search Tree - entrare ciclo infinito

voti
0

Sto usando il metodo ricorsivo per creare un binario Search Tree. Il mio obiettivo è quello di trovare l'elemento più basso nella struttura. Qui di seguito è il mio codice.

Inserimento

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;
}

Funzione MinValue

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

Il motivo per cui (IMO) il mio minValue () sta entrando in loop infinito è dovuto al curPtr non è sempre NULL. Come posso fare è NULL dopo aver inserito i dati utilizzando la funzione di inserimento ().

EDIT: Trovato il bug..so stupido da parte mia. Grazie a Raymond

sotto è il minValue modificato ()

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

Grazie Kelly.

È pubblicato 03/09/2011 alle 16:09
fonte dall'utente
In altre lingue...                            


1 risposte

voti
10

Non si può mai modificare curPtr nel vostro ciclo.

Risposto il 03/09/2011 a 16:13
fonte dall'utente

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