插入节点二叉树

时间:2012-11-27 13:10:59

标签: f# tree

我有这个树节点:

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

但我找不到一个好的插入功能。

我不想做交互式程序,输入应该是插入树的列表。

1 个答案:

答案 0 :(得分:2)

如果您不需要平衡树,那么您可以使用:

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 insertAll list tree = List.fold (fun t e -> insert e t) tree list