微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

返回二叉树中叶节点的列表路径

如何解决返回二叉树中叶节点的列表路径

我正在编写一个 dfs 函数,该函数返回叶节点的所有路径。

    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 举报,一经查实,本站将立刻删除。