1votos

Generador de árboles binarios en Haskell

por josejuan hace 6 años

Con este ha habido que pensar (razonar dirían los haskellsianos). Así, si quieres saber qué hace, tendrás que pensar tu también. ¡Y no te quejes que te pongo la firma!.

Crear una función que genere aleatoriamente árboles binarios con claves únicas de números naturales en sus nodos, y de los cuales, lo único que nos interesa son las listas obtenidas al procesar el árbol de forma Pre, In y Post orden.

1
2
3
4
5
6
7
arbolAleatorio :: (RandomGen g, Random a, Ord a) => g -> Int -> Int -> Int -> a -> (g, Int, [Int], [Int], [Int]) 
arbolAleatorio g k l x f = 
        if l > x || p > f then (h, k, [], [], []) else (j, o, [m] ++ a ++ u, b ++ [m] ++ v, c ++ w ++ [m]) 
        where   (p, h) = random g 
                m = k + 1 
                (i, n, a, b, c) = arbolAleatorio h m (l+1) x f 
                (j, o, u, v, w) = arbolAleatorio i n (l+1) x f 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.