JZ34 二叉树中和为某一值的路径(二)
描述
输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值的和为expectNumber的所有路径。
1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
2.叶子节点是指没有子节点的节点
3.路径只能从父节点到子节点,不能从子节点到父节点
4.总节点数目为n
如二叉树root为{10,5,12,4,7},expectNumber为22
![image-20220105155255905](https://gitee.com/zone_of_zfr/markdownImage/raw/master/nowcoder/image-20220105155255905.png)
则合法路径有[[10,5,7],[10,12]]
数据范围:
树中节点总数在范围 [0, 5000] 内
-1000 <= 节点值 <= 1000
-1000 <= expectNumber <= 1000
思路: dfs
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
class Solution:
def FindPath(self , root: TreeNode, target: int) -> List[List[int]]:
def dfs(root: TreeNode,s: int,path: List[int]):
if not root : return
if not root.left and not root.right:
if(s+root.val==target):
l.append(path+[root.val])
return
dfs(root.left,s+root.val,path+[root.val])
dfs(root.right,s+root.val,path+[root.val])
l = []
dfs(root,0,[])
return l