Python, передача списка в рекурсивную функцию - PullRequest
0 голосов
/ 30 мая 2020

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...