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 .
我已經在這幾個小時,不斷收到類似的錯誤。任何幫助將非常感激,即使只是一個小提示將是偉大的。
謝謝。