hola!
necesito ayuda con los arboles binarios,
en concreto (para facilitar las cosas ) los ABB
estoy haciendo un procedimiento que elimina un nodo x del ABB, para ello hay que considerar 3 casos
1) x es una hoja
2) x tiene un solo subarbol
3) x tiene dos subarboles, en este caso x debe reeemplazarse por su sucesor ( o predecesor) en un recorrido en inorden
y bueno, pues tengo unos ligeros problemillas, sobre todo con el caso 3
se supone que antes hay un procedimiento que busca el elemento en el ABB y nos devuelve el nodo en el q se encuentra dicho elemento, adjunto el codigo, y si alguien puede que me corrija:
PROCEDURE BorrarEle (VAR Raiz:TipoArbolBin; VAR Padre:PtroArbolBin );
BEGIN
IF ( Padre^.HijoIz = NIL ) AND (Padre^.HijoDr = NIL ) THEN
Padre:= NIL {eliminar una hoja}
ELSE IF (Padre^.HijoIz = NIL ) AND (Padre^.HijoDr <> NIL) THEN
Padre:= Padre^.HijoDr {eliminar un padre con un solo subarbol}
ELSE IF (Padre^.HijoIz <> NIL) AND (Padre^.HijoDr = NIL) THEN
Padre:= Padre^.HijoIz;
END ;(* BorrarEle *)
explico un poco, se supone que raiz apunta al primer elemento del arbol, y padre es el nodo que nos pasa el procedimiento buscar, es decir donde esta el elemento a eliminar, pues como es obvio, el problema esta en que no se como hacer que cambie la raiz
mas de uno pensara que estoy atontado:yes: con razon claro jejeje
bueno, eso que si alguien puede hecharme una manilla:gracias: