99 questions/Solutions/61A

From HaskellWiki
< 99 questions‎ | Solutions
Revision as of 13:39, 25 December 2016 by Wizzup (talk | contribs) (categorize)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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