SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Xtr en Jueves 12 de Junio de 2003, 19:50

Título: Re: arboles binarios
Publicado por: Xtr en Jueves 12 de Junio de 2003, 19:50
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 :think: mas de uno pensara que estoy atontado:yes: con razon claro jejeje
bueno, eso que si alguien puede hecharme una manilla:gracias:
Título: Re: arboles binarios
Publicado por: Xtr en Jueves 12 de Junio de 2003, 19:53
se me ha colado una carita, donde pone PtroArbolBin en la declaracion como antes hay : jejjejejee
y bueno hay que decir que el caso 3 no esta hecho....
Título: arboles binarios
Publicado por: cheapblack en Sábado 21 de Junio de 2003, 23:43
lo que necesitas esta adjuntado abajo