0
由于采用折叠功能转换二进制树列表:OCaml中
type 'a tree = Empty | Node of 'a * 'a tree * 'a tree
用途:
let rec tree_fold f e t = match t with
| Empty -> e
| Node (x, l, r) -> f x (tree_fold f e l) (tree_fold f e r);;
一个二叉树转换到一个列表。 示例。
let someTree = Node (1,Node(2,Node(3,Empty,Empty),Empty),Empty)
tree2list someTree
给出[1;2;3]
。
我尝试:
let tree2list tr = match tr with
| Empty -> Empty
| Node (x,l,r) -> (tree_fold (fun acc tree-> tree::acc) [] tr)
它给人的错误:
This expression has type 'a list but an expression was expected of type 'b -> 'b .
我已经在这几个小时,不断收到类似的错误。任何帮助将非常感激,即使只是一个小提示将是伟大的。
谢谢。