let map_by_fold f t =
let f1 x = Leaf (f x) in
let f2 x l r = Node (f x, l, r) in
fold_tree f1 f2 t;;
Example:
# let a = Node(10, Node (2, (Leaf 1), (Leaf 4)), Leaf 8);;
val a : int tree = Node (10, Node (2, Leaf 1, Leaf 4), Leaf 8)
# map_by_fold (fun x->2*x) a;;
- : int tree = Node (20, Node (4, Leaf 2, Leaf 8), Leaf 16)