Может быть, это глупый вопрос, поэтому прошу прощения, но существует проблема Leetcode, когда вам приходится возвращать все пути от корневого узла к листовым узлам в массиве строк, связанных с помощью «->» (пример ответа : ["1->2->5", "1->3"]). Оба решения в блоках кода ниже работают. Мне главным образом любопытно, почему для строкового решения я могу просто вернуться после добавления пути, а затем следующий вызов рекурсии не повлияет, но для решения массива я не могу вернуться, так как мне нужно удалить текущий элемент, иначе это повлияет следующий вызов рекурсии.
Это потому, что массивы изменяемы, поэтому сам массив изменяется, а строки - нет, и создается копия для передачи?
Это решение создания строки.
class Solution:
def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:
res = []
def dfs(node, currPath):
if not node:
return
currPath += str(node.val)
if not node.right and not node.left:
res.append(currPath)
return
dfs(node.left, currPath + "->")
dfs(node.right, currPath + "->")
dfs(root, "")
return res
И это решение: создать массив, а затем объединить его для создания строки.
class Solution:
def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:
res = []
def dfs(node, currPath):
if not node:
return
currPath.append(str(node.val))
if not node.right and not node.left:
res.append("->".join(currPath))
dfs(node.left, currPath)
dfs(node.right, currPath)
currPath.pop()
dfs(root, [])
return res
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-function
Разница между передачей параметров строки и массива в рекурсивную функцию ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Разница между передачей параметров строки и массива в рекурсивную функцию
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как создать рекурсивную концепцию C++ с пакетом параметров, вызываемым рекурсивно
Anonymous » » в форуме C++ - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-