如何解决返回二叉树中叶节点的列表路径
4
/ \
9 0
/ \
1 5
此列表的预期输出为:[[4,9,5],[4,1],0]]
这是我目前所拥有的:
class TreeNode:
def __init__(self,val=0,left=None,right=None):
self.val = val
self.left = left
self.right = right
def leafNodePaths(self,root):
paths = []
self.dfs(root,[],paths)
print(paths)
def dfs(self,root,current_path,paths):
if not root:
return
current_path.append(root.val)
if not root.left and not root.right:
paths.append(current_path)
else:
self.dfs(root.left,paths)
self.dfs(root.right,paths)
我得到的结果是 [[4,5,1,0],0]]
我如何保持 current_path
解决方法
提示是您将相同的列表传递给递归调用,然后向其添加值。正如有人曾经说过的,“共享可变状态是万恶之源”(或类似的话)。
current_path 被实例化一次,并且每个节点都将自己添加到其中。然后,当它遇到一个节点时,它会将指向当前路径的指针添加到解决方案路径列表中——因此它们每个都添加一个指向 SAME 列表的指针。
用以下方式解决问题-
current_path = copy(current_path) + [root.val]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。