python - Python:列表如何在递归中工作
问题描述
我正在尝试打印二叉树的路径(从根到叶节点)。我试图使用列表作为输入来记录路径并返回它。
但是,返回值为空,通过在递归函数中打印路径,我可以看到路径正在正确生成。
情况1:
Input:
res = printPath(root, node,[])
Output:
res = []
我的问题是,list 如何与递归一起工作,python 如何处理它的范围?
案例二:
Input:
p_ = []
res = printPath(root, node, p_)
Output:
res != []
也 res 不等于最终路径,在递归中,你能告诉我为什么会这样。例如,路径 = [3, 5], res = []
res 不是空的,但它会有一些递归的中间值。我想,在这种情况下,列表被视为指针。
如果您能告诉我这两种情况之间的区别,那就太好了。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def printPath(self, root, node, path):
if root:
# print root.val, node
if root.val == node:
path.append(node)
print path
return path
if root.left:
path.append(root.val)
self.printPath(root.left, node, path)
if root.right:
path.append(root.val)
self.printPath(root.right, node, path)
def lowest_main(self, root, p):
# print root.val, p
p_ = []
print self.printPath(root, 5, p_)
# print p_
解决方案
因为:
>>> [].append(2)
>>> []
[]
>>> l=[]
>>> l.append(2)
>>> l
[2]
>>>
因为[]
没有存储在任何地方,所以不会更新任何变量,这就是原因。
[]
之后会保存在内存中append
,但无法访问它。
推荐阅读
- sql - 我正在 SYBASE 数据库中编写一个 SP,我收到类型不匹配的错误,我尝试了所有我知道的方法,但它仍然存在
- python-3.x - 如何组合多个 pathlib 对象?
- c# - 对于某些循环实体,多个添加的实体可能具有相同的主键
- python - “为什么”相同版本的python的2个不同可执行文件?
- powershell - 使用 Powershell 创建自动回复
- r - 使用映射函数的分组回归中的错误
- html - Angular中同一对象成员的不同值
- python-3.x - django.urls.exceptions.NoReverseMatch:找不到“家”的反向。'home' 不是有效的视图函数或模式名称
- mongodb - 如何在 mongodb $lookup 聚合中使用 NOT IN 数组条件
- rest - REST 中的 GET 与 POST