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?