Ocaml 计算树中的值之和

Ocaml 计算树中的值之和,ocaml,caml,Ocaml,Caml,假设我们定义了一个整数树: type inttree = Int of int | Node of inttree * inttree ;; 是否有任何可能的方法可以找到该树的元素之和?尝试一个简单的递归函数(执行深度优先遍历),如 第一行可能是let rec mysum=function(这是一个风格问题)。为什么不编写一个函数,使用DFS或其他方法在所有节点上进行迭代?什么是DFS?你能给我举个例子吗?我刚刚接触函数方法,由于缺乏资源和时间,我正在逃避理论,而采用大量编码方法。谢谢。当您需

假设我们定义了一个整数树:

type inttree = Int of int | Node of inttree * inttree ;;

是否有任何可能的方法可以找到该树的元素之和?

尝试一个简单的递归函数(执行深度优先遍历),如


第一行可能是
let rec mysum=function
(这是一个风格问题)。

为什么不编写一个函数,使用DFS或其他方法在所有节点上进行迭代?什么是DFS?你能给我举个例子吗?我刚刚接触函数方法,由于缺乏资源和时间,我正在逃避理论,而采用大量编码方法。谢谢。当您需要迭代图中的所有节点(树也是一个图)并对每个节点执行某些操作时(在您的情况下,您需要对节点的所有值求和),或者通常使用。不同之处在于遍历顺序,在您的案例中什么并不重要。因此,最简单的方法就是编写一个4行递归函数,在这里,您要么读取并累积值(递归的基本情况),要么进行另一个递归调用。这不是一个搜索,而是一个遍历。
 let rec mysum t = match t with
      Int x -> x
    | Node (l,r) -> mysum l + mysum r
 ;;