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;