data Tree a = Leaf | Branch { left :: Tree a, key :: a, right :: Tree a } summe :: Tree Int -> Int summe t = case t of Leaf {} -> 0 ; Branch {} -> summe (left t) + key t + summe (right t) preorder :: Tree a -> [a] preorder t = case t of Leaf {} -> [] ; Branch {} -> key t : preorder (left t) ++ preorder (right t)