Tree OCaml-遍历树

Tree OCaml-遍历树,tree,ocaml,Tree,Ocaml,让我们在ocaml中定义一个类型树 type 'a tree = T of 'a * 'a list;; 我想用两种方式遍历这个图:(1)从根到叶(2)从叶到根 你能帮我吗?我认为你应该用树列表来代替'a list,因为现在写的东西根本不是树。你应该自己做作业,而不是把它们发布在stackoverflow上。我认为这是一个不可编译的解决方案,因为元组的2ns元素是树而不是listYeah,在没有足够仔细的情况下复制了它-修复。它是如何工作的?也许你可以给我展示一下用左折叠遍历树? type

让我们在ocaml中定义一个类型树

type 'a tree = 
 T of 'a * 'a list;;
我想用两种方式遍历这个图:(1)从根到叶(2)从叶到根


你能帮我吗?

我认为你应该用树列表来代替
'a list
,因为现在写的东西根本不是树。你应该自己做作业,而不是把它们发布在stackoverflow上。我认为这是一个不可编译的解决方案,因为元组的2ns元素是树而不是listYeah,在没有足够仔细的情况下复制了它-修复。它是如何工作的?也许你可以给我展示一下用左折叠遍历树?
type 'a tree = T of 'a * 'a tree list

let rec walk_downwards f = function
  | T (elt, children) ->
      f elt;
      List.iter (walk_downwards f) children

let rec walk_upwards f = function
  | T (elt, children) ->
      List.iter (walk_upwards f) children;
      f elt