Finne det minste elementet i et binært søketre - går inn uendelig loop

stemmer
0

Jeg bruker rekursiv metode for å lage et binært søketre. Mitt mål er å finne den laveste element i treet. Nedenfor er min kode.

Innsetting

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 Funksjon

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

Grunnen til at (IMO) min MINVALUE () går inn i uendelig løkke skyldes curPtr er alltid ikke NULL. Hvordan kan jeg gjøre det NULL etter at jeg har satt inn data ved anvendelse av innleggs () -funksjonen.

EDIT: Fant bug..so dumt av meg. Takk til Raymond

Nedenfor er det redigerte MINVALUE ()

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

Takket Kelly.

Publisert på 03/09/2011 klokken 15:09
kilden bruker
På andre språk...                            


1 svar

stemmer
10

Du aldri endre curPtr i loop.

Svarte 03/09/2011 kl. 15:13
kilden bruker

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