LeetCode 113. Path Sum II
考点 | 难度 |
---|---|
DP | Medium |
题目
Given the root of a binary tree and an integer targetSum, return all root-to-leaf paths where the sum of the node values in the path equals targetSum. Each path should be returned as a list of the node values, not node references.
A root-to-leaf path is a path starting from the root and ending at any leaf node. A leaf is a node with no children.
思路
记录path
记录剩下的targetsum
如果到leaf node - 检查targetsum是不是等于0,add path
else dfs left and right
答案
class Solution:
def pathSum(self, root: TreeNode, targetSum: int) -> List[List[int]]:
def dfs(root, targetSum, path):
if root == None: return None
targetSum -= root.val
path.append(root.val)
if root.left == None and root.right == None: # Is leaf node
if targetSum == 0: # Found a valid path
ans.append(path.copy())
else:
dfs(root.left, targetSum, path)
dfs(root.right, targetSum, path)
path.pop() # backtrack
ans = []
dfs(root, targetSum, [])
return ans