99 questions/Solutions/62: Difference between revisions
< 99 questions | Solutions
No edit summary |
mNo edit summary |
||
Line 5: | Line 5: | ||
<haskell> | <haskell> | ||
internals :: Tree a -> [a] | internals :: Tree a -> [a] | ||
internals Empty = [] | internals Empty = [] | ||
internals (Branch a Empty Empty) = [] | internals (Branch a Empty Empty) = [] | ||
internals (Branch a left right) = | internals (Branch a left right ) = a : internals left ++ internals right | ||
</haskell> | </haskell> |
Revision as of 20:23, 20 January 2011
Collect the internal nodes of a binary tree in a list
An internal node of a binary tree has either one or two non-empty successors. Write a predicate internals/2 to collect them in a list.
internals :: Tree a -> [a]
internals Empty = []
internals (Branch a Empty Empty) = []
internals (Branch a left right ) = a : internals left ++ internals right