99 questions/Solutions/61A
From HaskellWiki
Collect the leaves of a binary tree in a list
A leaf is a node with no successors. Write a predicate leaves/2 to collect them in a list.
leaves :: Tree a -> [a] leaves Empty = [] leaves (Branch a Empty Empty) = [a] leaves (Branch a left right) = leaves left ++ leaves right
Alternative solution only using cons:
leaves t = leaves' t [] where leaves' Empty xs = xs leaves' (Branch x Empty Empty) xs = x:xs leaves' (Branch _ l r) xs = leaves' l $ leaves' r xs
