
data Tree a =  Nul | Node a (Tree a) (Tree a)

flatten :: Tree a -> [a]
flatten tree                = flatten' tree []
flatten' :: Tree a -> [a] -> [a]
flatten' Nul            acc = acc
flatten' (Node a t1 t2) acc = flatten' t1 (a : flatten' t2 acc)

-- flatten' (Node 22 (Node 14 Nul Nul) (Node 11 Nul Nul)) [4,5,6] 
-- = flatten' (Node 14 Nul Nul) (22 : flatten' (Node 11 Nul Nul) [4,5,6])
-- = flatten' (Node 14 Nul Nul) (22 : flatten' Nul (11 : flatten' Nul [4,5,6]))
-- = flatten' (Node 14 Nul Nul) (22 : (11 : [4,5,6]))
-- = flatten' Nul (14 : flatten' Nul (22 : (11 : [4,5,6])))


