type 't btree = | Nil | Node of 't * 't btree * 't btree let Leaf x = Node(x,Nil,Nil) let x = Node(0,Node(1,Leaf(2),Nil),Node(3,Leaf(4),Leaf(5))) let rec ToSeq t = seq { match t with | Nil -> () | Node(x,L,R) -> yield! ToSeq L yield x yield! ToSeq R } x |> ToSeq