LeetCode 1325. Delete Leaves With a Given Value in F#
URL
Delete Leaves With a Given Value - LeetCode
Code
type Tree =
| Leaf
| Node of int * Tree * Tree
let rec removeLeafNodes (root: Tree) (target: int) : Tree =
match root with
| Leaf -> Leaf
| Node(v, Leaf, Leaf) when v = target -> Leaf
| Node(v, left, right) ->
let left' = removeLeafNodes left target
let right' = removeLeafNodes right target
match left', right', v = target with
| Leaf, Leaf, true -> Leaf
| _ -> Node(v, left', right')