99 questions/Solutions/61A
< 99 questions | Solutions
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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