Разница между передачей параметров строки и массива в рекурсивную функциюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разница между передачей параметров строки и массива в рекурсивную функцию

Сообщение Anonymous »

Может быть, это глупый вопрос, поэтому прошу прощения, но существует проблема 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Разница между передачей параметров строки и массива в рекурсивную функцию
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Является ли Java «передачей по ссылке» или «передачей по значению»?
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как создать рекурсивную концепцию C++ с пакетом параметров, вызываемым рекурсивно
    Anonymous » » в форуме C++
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Вызов функции построения PHP с передачей параметров по ссылке
    Anonymous » » в форуме Php
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Вызов функции построения PHP с передачей параметров по ссылке
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»