Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Learn more about F# at http://fsharp.ne
- type 'a Tree =
- | Empty
- | Branch of 'a * 'a Tree * 'a Tree
- let breadth_traverse (tree : Tree<'a>) = // обход дерева в ширину (вывод в строку)
- let rec loop (trees : seq<Tree<'a>>) = seq {
- let values =
- trees
- |> Seq.choose (function
- | Empty -> None
- | Branch (value, _, _) -> Some value)
- yield! values
- let subtrees =
- trees
- |> Seq.collect (function
- | Empty -> Seq.empty
- | Branch (value, left, right) -> seq { yield left; yield right })
- |> Seq.toArray
- if subtrees.Length > 0 then
- yield! loop subtrees
- }
- ()
- loop <| seq { yield tree }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement