leaves :: Tree a -> Int
leaves t = case t of
Leaf -> 1
Node { key = k, left = l, right = r }
-> leaves l + leaves r
inorder :: Tree a -> [a]
inorder t = case t of
Leaf -> []
Node { key = k, left = l, right = r }
-> inorder l ++ [ k ] ++ inorder r