Programación General > ADA
Encontrar el sucesor simetrico
(1/1)
jer0Me:
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 --- -------------------------------------------------------------- -- 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;
Navegación
Ir a la versión completa