给你一棵以节点 0 为根节点的树,定义如下:
- 节点的总数为
nodes
个; - 第
i
个节点的值为value[i]
; - 第
i
个节点的父节点是parent[i]
。
请你删除节点值之和为 0 的每一棵子树。
在完成所有删除之后,返回树中剩余节点的数目。
示例:

输入:nodes = 7, parent = [-1,0,0,1,2,2,2], value = [1,-2,4,0,-2,-1,-1]
输出:2
提示:
1 <= nodes <= 10^4
-10^5 <= value[i] <= 10^5
parent.length == nodes
parent[0] == -1
表示节点0
是树的根。
解题思路
树型问题首先思考dfs
解法。首先我们需要通过parent
构建树,然后递归。递归中需要处理当前节点为根的子树和sumAll
和节点个数cnt
。当sumAll
为0
的时候,返回节点个数为0
即可。
class Solution:
def deleteTreeNodes(self, nodes: int, parent: List[int], value: List