LeetCode 2265. Count Nodes Equal to Average of Subtree in F#
URL
Count Nodes Equal to Average of Subtree - LeetCode
Code
type Tree =
| Leaf
| Node of int * Tree * Tree
let averageOfSubtree (root: Tree) : int =
let rec averageOfSubtree' node =
match node with
| Leaf -> 0, 0, 0
| Node(v, left, right) ->
let ret1, sum1, count1 = averageOfSubtree' left
let ret2, sum2, count2 = averageOfSubtree' right
let count = 1 + count1 + count2
let sum = v + sum1 + sum2
let average = sum / count
let ret = if v = average then ret1 + ret2 + 1 else ret1 + ret2
ret, sum, count
let ret, _, _ = averageOfSubtree' root
ret