SoloCodigo

Programación General => Otros Lenguajes de Programación => ADA => Mensaje iniciado por: jer0Me en Sábado 6 de Junio de 2009, 18:55

Título: Encontrar el sucesor simetrico
Publicado por: jer0Me en Sábado 6 de Junio de 2009, 18:55
Buenas, tengo un problema con una función. Esta función consiste en buscar el sucesor simetrico de un arbol binario de busqueda al extraer un elemento que es de grado dos. y el problema es que no se me ocurre como adoptar el hijo derecho del elemento a extraer, ya que dentro del hijo derecho del elemento a extraer se encuentra su sucesor. Gracias de antemano.

Código: Text
  1.             --------------------------------------------------------------
  2.             -- El sucesor de un nodo de grado 2 es el primer nodo hacia --
  3.             -- la izquierda, a partir del hijo derecho, que no tenga    --
  4.             -- hijo izquierdo                                           --
  5.             -- El sucesor adopta a los hijos del nodo a extraer y el    --
  6.             -- hijo derecho del sucesor es adoptado por el padre del    --
  7.             -- sucesor (salvo que el sucesor sea el hijo derecho del    --
  8.             -- nodo a extraer)                                          --
  9.             --------------------------------------------------------------
  10.          function Sucesor_Simetrico(A: Arbol_Bin_Bus) return Arbol_Bin_Bus is
  11.             function Min (A : Arbol_Bin_Bus) return Arbol_Bin_Bus is
  12.             begin
  13.                if A.Hijos (1) = null then
  14.                   return A;
  15.                else
  16.                   return Min (A.Hijos (1));
  17.                end if;
  18.             end Min;
  19.             S : Arbol_Bin_Bus;
  20.          begin
  21.             S := Min (A.Hijos (2));
  22.             S.Hijos (1) := A.Hijos (1);
  23.             return S;
  24.          end Sucesor_Simetrico;
  25.