data Tree a = Empty | Branch a (Tree a) (Tree a)
  deriving (Show, Eq)

internals :: Tree a -> [a]
internals Empty = []
internals (Branch _ Empty Empty) = []
internals (Branch a branch1 branch2) =
  (a : internals branch1) ++ internals branch2