小编Tri*_*ork的帖子

OCaml中多路树的最大值

我是一名IT学生,也是OCaml的新手

最近,在考试中我找到了这个练习.

给定:键入'a tree =树'a''树列表

定义一个函数mtree:'a tree - >'a,它返回多路树中所有节点的最大值,遵循OCaml中的通常顺序关系(<=)

我下面会做这样的事情,当然,这是行不通的.

let rec mtree (Tree (r, sub)) =
        let max_node (Tree(a, l1)) (Tree(b, l2)) =
            if a >= b then (Tree(a, l1)) else (Tree(b, l2)) in
        List.fold_left max_node r sub;;
Run Code Online (Sandbox Code Playgroud)

在阅读完答案之后,我发布了固定代码.

let rec mtree (Tree(r,sub)) =
    let max_node (Tree(a, l1)) (Tree(b, l2)) =
        if a >= b then a else b in
    List.fold_left (max_node) r (List.map mtree sub);;
Run Code Online (Sandbox Code Playgroud)

这个想法是相同的,折叠列表比较使用我的本地函数的节点,并通过在连续级别的节点列表上调用函数本身来遍历树.

但是仍然无法正常工作.现在抱怨fold_left部分中的max_node.

Error: This expression has type 'a tree -> 'a tree -> …
Run Code Online (Sandbox Code Playgroud)

tree ocaml max multiway-tree

5
推荐指数
1
解决办法
1267
查看次数

标签 统计

max ×1

multiway-tree ×1

ocaml ×1

tree ×1