Actualización de «Enumeración de árboles binarios»
He actualizado las soluciones del ejercicio Enumeración de árboles binarios cuyo enunciado es
Los árboles binarios se pueden representar mediante el tipo Arbol definido por
data Arbol a = H a | N (Arbol a) a (Arbol a) deriving Show
Por ejemplo, el árbol
"B" / \ / \ / \ "B" "A" / \ / \ "A" "B" "C" "C"
se puede definir por
ej1 :: Arbol String ej1 = N (N (H "A") "B" (H "B")) "B" (N (H "C") "A" (H "C"))
Definir la función
enumeraArbol :: Arbol t -> Arbol Int
tal que (enumeraArbol a)
es el árbol obtenido numerando las hojas y los nodos de a
desde la hoja izquierda hasta la raíz. Por ejemplo,
λ> enumeraArbol ej1 N (N (H 0) 1 (H 2)) 3 (N (H 4) 5 (H 6))
Gráficamente,
3 / \ / \ / \ 1 5 / \ / \ 0 2 4 6