Sml doblando un árbol

Estoy tratando de obtener el producto de un árbol usando la función de plegado hasta ahora, esto es lo que tengo. Estoy confundido sobre cómo usar el método de plegado al cruzar el árbol

datatype 'a bin_tree = Leaf of 'a 
| Node of 'a bin_tree * 'a bin_tree


fun treefold g z Empty = z
| treefold g z (Node (l, x, r)) = g(x, g(treefold g z l, treefold g z r)

Respuestas a la pregunta(2)

Su respuesta a la pregunta