https://leetcode.com/problems/path-sum-ii/
Этот вопрос от Leetcode, код работает, но меня действительно смущало, как список изменяется в рекурсивных функциях. То есть список передается по ссылке, верно? Итак, после добавления значения в список в более глубоких рекурсивных вызовах оно должно сохраняться в мелких функциях? Но в моем списке «ls» нет значений, которые были добавлены в последней части вызовов рекурсии. Мне действительно нужно понять, как списки передаются в рекурсивные функции и как они изменяются.
class Solution:
def dfs(self, root, sum, ls, res):
if not root.left and not root.right and sum == root.val:
ls.append(root.val)
res.append(ls)
print(ls)
if root.left:
self.dfs(root.left, sum-root.val, ls+[root.val], res)
if root.right:
self.dfs(root.right, sum-root.val, ls+[root.val], res)
def pathSum(self, root: TreeNode, su: int) -> List[List[int]]:
if not root:
return []
ls = []
ans = []
self.dfs(root, su, ls, ans)
return ans