nodos Eliminación en BST utilizando libre (N)

votos
0

Estoy codificación de un árbol binario de búsqueda y estoy teniendo un poco de problemas para encontrar una manera de eliminar el nodo de manera efectiva.

Tengo este código:

struct node* deleteNode(int i, struct node *N)

{
    if (N==NULL)
    {
        return NULL;
    }
    else if (i<N->value)
    {
        N->size--;
        N->lChild=deleteNode(i,N->lChild);
    }
    else if (i>N->value)
    {
        N->size--;
        N->rChild=deleteNode(i,N->rChild);
    }
    else if (N->lChild==NULL)
    {
        return N->rChild;
    }
    else if (N->rChild==NULL)
    {
        return N->lChild;
    }
    else
    {
        N->size--;
        N->value=findMin(N->rChild);
        N->rChild=deleteNode(N->value,N->rChild);
    }
    return N;
}

Y N es una estructura de nodos que tienen 5 campos: valor, lchild, rChild, tamaño, altura. De hecho lo que estoy haciendo aquí es hacer que el árbol no apuntar hacia el nodo que quiero borrar pero cuando estoy tratando de poner algo como:

    else if (N->rChild==NULL)
    {
        free(N);
        N=NULL;
        return N->lChild;
    }

O cada código de aspecto similar, no funciona. Alguien me puede apuntar en la dirección correcta, por favor? Gracias.

Publicado el 30/03/2011 a las 17:20
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Primero de todo lo que está diciendo N = NULL y luego llamar N-> lchild N es nula y que apunta a nada así que ¿qué se puede esperar para obtener el valor lchild?

Dado que esta es la tarea no voy a dar una respuesta directa, pero consejos.

Para eliminar el nodo, compruebe si tiene hijos, si es imposible liberar y eliminar las referencias a él como el PTR los padres del niño. Si tiene 1 niño de intercambio del PTR que apunta al nodo que desea borrar con el niño y liberar el nodo. Lo mismo se aplica si también tiene 2 hijos.

Respondida el 30/03/2011 a las 17:24
fuente por usuario

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