1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| from collections import defaultdict
from typing import List
class Solution:
def deleteTreeNodes(self, nodes: int, parent: List[int], value: List[int]) -> int:
sons = {i: set() for i in range(nodes)}
for i, p in enumerate(parent):
if i: sons[p].add(i)
def dfs(x):
total, count = value[x], 1
for y in sons[x]:
t, c = dfs(y)
total += t
count += c
return total, count if total else 0
return dfs(0)[1]
|