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    

しかし、1 つの整数を追加する代わりに、整数のリスト全体を追加したいと考えています。例:

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 に答える