[1er parcial 2008][Ejercicio 3b]

[1er parcial 2008][Ejercicio 3b]

de Gabriela Nataly Wynants Lombardini -
Número de respuestas: 2

PROCEDURE Borrar (VAR A : ABB);

Dado un árbol binario de búsqueda de enteros de tipo ABB, elimina el elemento que se encuentra en la raíz del árbol. Precondición: el árbol es no vacío.

La solucion que hice es:

PROCEDURE Borrar(VAR A:ABB);

VAR

aux:ABB;

BEGIN

IF A^.izq=NIL THEN aux:=A;

                               A:=A^.der;

                               DISPOSE(aux);

                     ELSIF A^.der=NIL THEN aux:=A;

                                                          A:=A^.izq;

                                                          DISPOSE(aux);

                     ELSE A^.dato:=BorrarMin(A^.der);

END;

END Borrar;


(Función BorrarMin: Dado un árbol binario de búsqueda de enteros de tipo ABB, elimina y retorna el mínimo
elemento del árbol. Precondición: el árbol es no vacío.)

Lo que plantean en la solucion es lo mismo sin la parte de fijarse si A^.izq=NIL, no entiendo por qué, porque mi solucion tambien deja un arbol binario de busqueda.. esta bien lo que hice o solo esta bien la solucion planteada?

En respuesta a Gabriela Nataly Wynants Lombardini

Re: [1er parcial 2008][Ejercicio 3b]

de Lorena Etcheverry -

Hola Gabriela:

tu solución también vale.

La que está en la sol del parcial es más compacta.

Cuando decis que no entendés por qué, te referís a que no entendés por qué no es necesario considerar como caso base que el subárbol izquierdo sea vacio?

 

slds

Lorena