抓取树中的节点列表?

时间:2014-10-16 20:32:57

标签: functional-programming ocaml

您如何使用ocaml从树结构中获取符合特定条件的节点列表?由于所有内容都是重新创建的,因此没有保存的数据结构。尝试返回列表的任何类型的函数只能在命中节点而不是列表时返回一个元素。

1 个答案:

答案 0 :(得分:0)

这是树型:

type tree = Leaf of int | Node of int * tree * tree

这是一个从树的节点返回所有偶数值的函数:

let evens t =
    let rec go sofar = function
    | Leaf k -> if k mod 2 = 0 then k :: sofar else sofar
    | Node (k, lt, rt) ->
         let sofar' = if k mod 2 = 0 then k :: sofar else sofar in
         let sofar'' = go sofar' lt in
         go sofar'' rt
    in
    go [] t