我有这个代码
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
Run Code Online (Sandbox Code Playgroud)
但是我想添加一个整数,我想添加一个整数列表.例:
let tree = addList [5;2;1;6;7];;
Run Code Online (Sandbox Code Playgroud)
并且列表应该添加到树中
你可以简单地做这样的折叠
let tree = List.fold (fun tree x -> insert x tree) Empty [5;2;1;6;7];;
Run Code Online (Sandbox Code Playgroud)
在每个步骤中,您将返回一个新树,在下一步中添加下一个元素.而不是Empty您可以使用任何您想要添加元素列表的现有树.