99 questions/Solutions/62: Difference between revisions

From HaskellWiki
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) = [a] ++ (internals left) ++ (internals 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