Solution
= Solution
Include each child itself, followed by its proper <subtrees>, while excluding the current root:
``
proper :: Tree a -> [Tree a]
proper (One _) = []
proper (Two l r) = (l : proper l) ++ (r : proper r)
``
Again, occurrences matter: a child with the same value as another child is not removed. The definition is a <structural recursion>, but its right-hand side uses the original children as well as their recursively computed results.