foldWithDirectChildren :: (a -> a -> a) -> a -> Tree a -> Tree a
foldWithDirectChildren f z (Node a s) = Node (a `f` foldl f z (map rootLabel s)) s
foldWithDirectChildren :: (a -> a -> a) -> a -> Tree a -> Tree a
foldWithDirectChildren f z (Node a s) = Node (a `f` foldl f z (map rootLabel s)) s
foldWithDirectChildren f z (Node a s) = Node (a `f` foldl f z (map rootLabel s)) s