题目描述:
题解:回溯
1.path记录当前路径,result保存所有符合要求的路径。
2.如果输入root为空,则直接返回,否则将root.val加入path,从target中减掉root.val,如果此时root为叶子结点并且target=0,则将path加入result,否则对root的左右子节点调用dfs,然后进行回溯(path中删除root.val,target加上,root.val值)
class Solution: def pathSum(self, root: TreeNode, target: int) -> List[List[int]]: def dfs(root,target,path): if root==None: return path.append(root.val) target = target-root.val if root.left==None and root.right==None and target==0: result.append(path[:]) else: dfs(root.left,target,path) dfs(root.right,target,path) target = target+root.val path.pop() result = [] path = [] dfs(root,target,path) return result