bobo老师您好~
对于力扣 113. Path Sum II, 用递归的方法可以做出这道题. 但是在刚看到这道题时, 脑子里最开始的思路就是用回溯算法, 比如 Example 1中, 如果走到7, 发现不对, 就回溯到上面一个节点然后看上个节点的右节点 - 看起来是一个回溯思路.
但是当我用回溯算法写的时候总是不对, 能不能请bobo老师帮忙看一下呢?
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def pathSum(self, root: TreeNode, targetSum: int) -> List[List[int]]:
res, path = [], []
def backtrack(root, target):
if not root:
return
if not root.left and not root.right:
if root.val == target:
path.append(root.val)
res.append(path[:])
return
path.append(root.val)
backtrack(root.left, target - root.val)
path.pop()
path.append(root.val)
backtrack(root.right, target - root.val)
path.pop()
backtrack(root, targetSum)
return res
结果:
Output[[5,4,11,2],[5,5,8,4,5]]
Expected[[5,4,11,2],[5,8,4,5]]
请问老师: