| Node of 'a * Tree<'a> * Tree<'a>
let traverse (tree : Tree<'a>) =
let rec loop (trees : seq<Tree<'a>>) = seq {
| Node (value, _, _) -> Some value)
| Node (value, left, right) -> seq { yield left; yield right })
if subtrees.Length > 0 then
loop <| seq { yield tree }
traverse tree |> Seq.iter (printfn "%d")