LeetCode 429. N-ary Tree Level Order Traversal in F#

URL

leetcode.com/problems/n-ary-tree-level-orde..

Code

github.com/syohex/dotnet-study/blob/master/..

type Tree =
    | Leaf
    | Node of int * (Tree list)

let levelOrder (root: Tree) : int list list =
    let rec levelOrder' nodes acc =
        match nodes with
        | [] -> acc |> List.rev
        | _ ->
            let vals, children =
                nodes
                |> List.fold
                    (fun (vals, children) node ->
                        match node with
                        | Leaf -> vals, children
                        | Node (v, cs) -> v :: vals, children @ cs)
                    ([], [])

            levelOrder' children ((vals |> List.rev) :: acc)

    levelOrder' [ root ] []