Advertisement
Guest User

Untitled

a guest
Nov 8th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.71 KB | None | 0 0
  1. // Learn more about F# at http://fsharp.ne
  2. type 'a Tree =
  3. | Empty
  4. | Branch of 'a * 'a Tree * 'a Tree
  5.  
  6. let breadth_traverse (tree : Tree<'a>) = // обход дерева в ширину (вывод в строку)
  7. let rec loop (trees : seq<Tree<'a>>) = seq {
  8.     let values =
  9.       trees
  10.       |> Seq.choose (function
  11.         | Empty -> None
  12.         | Branch (value, _, _) -> Some value)
  13.  
  14.     yield! values
  15.  
  16.     let subtrees =
  17.       trees
  18.       |> Seq.collect (function
  19.         | Empty -> Seq.empty
  20.         | Branch (value, left, right) -> seq { yield left; yield right })
  21.       |> Seq.toArray
  22.  
  23.     if subtrees.Length > 0 then
  24.       yield! loop subtrees
  25.   }
  26.  ()
  27.  loop <| seq { yield tree }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement