Het vinden van de kleinste element in een binaire zoekboom - het invoeren van oneindige lus

stemmen
0

Ik gebruik recursieve methode om een ​​Binary Search Boom te creëren. Mijn doel is om de laagste element in de boom te vinden. Hieronder is mijn code.

Invoeging

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 Functie

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

De reden waarom (IMO) mijn MINVALUE () wordt het aangaan van oneindige lus is te wijten aan curPtr is niet altijd NULL. Hoe kan ik het NULL nadat ik de gegevens zijn ingevoegd met insert () functie.

EDIT: Vond de bug..so stom van me. Met dank aan Raymond

Hieronder is de bewerkte MINVALUE ()

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

Thanks Kelly.

De vraag is gesteld op 03/09/2011 om 16:09
bron van user
In andere talen...                            


1 antwoorden

stemmen
10

Je hebt nooit curPtr wijzigen in je loop.

antwoordde op 03/09/2011 om 16:13
bron van user

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