LeetCode 129. Sum Root to Leaf Numbers in F#
URL
Sum Root to Leaf Numbers - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/0129/main.fsx
type Tree =
| Leaf
| Node of int * Tree * Tree
let sumNumbers (root: Tree) : int =
let rec sumNumbers' node acc =
match node with
| Leaf -> failwith "never reach here"
| Node(v, left, right) ->
let acc' = acc * 10 + v
match left, right with
| Leaf, Leaf -> acc'
| _, Leaf -> sumNumbers' left acc'
| Leaf, _ -> sumNumbers' right acc'
| _ -> (sumNumbers' left acc') + (sumNumbers' right acc')
sumNumbers' root 0
let tree1 = Node(1, Node(2, Leaf, Leaf), Node(3, Leaf, Leaf))
// 25
sumNumbers tree1
let tree2 =
Node(4, Node(9, Node(5, Leaf, Leaf), Node(1, Leaf, Leaf)), Node(0, Leaf, Leaf))
// 1026
sumNumbers tree2