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