LeetCode 1305. All Elements in Two Binary Search Trees in F#

Problem URL

leetcode.com/problems/all-elements-in-two-b..

Code

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

type TreeNode =
    | Empty
    | Node of int * TreeNode * TreeNode

let allElements (root: TreeNode) : int list =
    let rec allElements' (node: TreeNode) (acc: int list) : int list =
        match node with
        | Empty -> acc
        | Node (value, left, right) ->
            let left_acc = allElements' left (value :: acc)
            allElements' right left_acc

    allElements' root []

let getAllElements (root1: TreeNode) (root2: TreeNode) : int list =
    let values1 = allElements root1
    let values2 = allElements root2
    values1 @ values2 |> List.sort