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.
-             -------------------------------------------------------------- 
-             -- El sucesor de un nodo de grado 2 es el primer nodo hacia -- 
-             -- la izquierda, a partir del hijo derecho, que no tenga    -- 
-             -- hijo izquierdo                                           -- 
-             -- El sucesor adopta a los hijos del nodo a extraer y el    -- 
-             -- hijo derecho del sucesor es adoptado por el padre del    -- 
-             -- sucesor (salvo que el sucesor sea el hijo derecho del    -- 
-             -- nodo a extraer)                                          -- 
-             -------------------------------------------------------------- 
-          function Sucesor_Simetrico(A: Arbol_Bin_Bus) return Arbol_Bin_Bus is 
-             function Min (A : Arbol_Bin_Bus) return Arbol_Bin_Bus is 
-             begin 
-                if A.Hijos (1) = null then 
-                   return A; 
-                else 
-                   return Min (A.Hijos (1)); 
-                end if; 
-             end Min; 
-             S : Arbol_Bin_Bus; 
-          begin 
-             S := Min (A.Hijos (2)); 
-             S.Hijos (1) := A.Hijos (1); 
-             return S; 
-          end Sucesor_Simetrico; 
-