01 · Question
Evaluate an N-ary tree where internal nodes are operations (sum, product, min, max) and leaves are numbers.
02 · Solution
1def evaluate(root: 'NNode') -> int:2 if root.kind == 'num':3 return root.num4 vals = [evaluate(child) for child in root.children]5 if root.kind == 'sum':6 return sum(vals)7 if root.kind == 'product':8 res = 19 for v in vals:10 res *= v11 return res12 if root.kind == 'max':13 return max(vals)14 return min(vals)