Encontrar el elemento más pequeño en un árbol binario de búsqueda - de entrar en bucle infinito

votos
0

Estoy utilizando el método recursivo para crear un árbol de búsqueda binaria. Mi objetivo es encontrar el elemento más bajo en el árbol. A continuación se muestra el código.

Inserción

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

Función MinValue

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

La razón por la (OMI) mi minValue () está entrando en bucle infinito se debe a curPtr es siempre no es NULL. ¿Cómo puedo hacer que sea NULL después he insertado los datos utilizando la función de inserción ().

EDIT: Me pareció que el bug..so estúpido de mi parte. Gracias a Raymond

a continuación es la minValue editado ()

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

Gracias Kelly.

Publicado el 03/09/2011 a las 16:09
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
10

Nunca se modifica curPtr en su bucle.

Respondida el 03/09/2011 a las 16:13
fuente por usuario

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