1

我有这个代码

type Tree<'T when 'T: comparison> = 
| Empty 
| Node of 'T * Tree<'T> * Tree<'T>

let rec insert value = function
| Empty -> Node(value, Empty, Empty)
| Node(v, left, right) when value < v -> Node(v, insert value left, right)
| Node(v, left, right) when value > v -> Node(v, left, insert value right)
| Node(_, _, _) as n -> n    

但我想添加一个整数列表,而不是添加一个整数。例子:

let tree = addList [5;2;1;6;7];;

并且列表应该添加到树中

4

1 回答 1

5

你可以简单地做这样的折叠

let tree = List.fold (fun tree x -> inser­t x tree)­ Empty­ [5;2;1;6;7];;

在每个步骤中,您都会返回一个新树,在下一步中您将向其中添加下一个元素。Empty您可以使用要向其添加元素列表的任何现有树来代替。

于 2012-11-27T14:46:21.547 回答