python - 返回BST python中所有路径的列表
问题描述
假设我有一棵二叉树,从根到叶的路径是 3-1-3、3-4-5、3-4-1 ...我将如何返回所有不同路径的列表?这是我到目前为止所拥有的,但它所做的只是返回 [[3, 1, 3, 4, 1, 5], [3, 1, 3, 4, 1, 5], [3, 1, 3, 4, 1, 5]],这是树中所有节点的三个列表,而不是每个路径的单独列表。
self.res = []
def helper(root, temp):
if not root:
return
temp.append(root.val)
if not root.left and not root.right:
self.res.append(temp)
return
helper(root.left, temp)
helper(root.right, temp)
helper(root, [])
解决方案
您不能追加到temp
需要为temp
左右分支递归调用创建当前的不同副本的情况。
这是您的递归 DFS 方法的稍微修改的版本,它应该可以按照您的意愿工作,通过这样做:
class BinaryTreePaths:
def __init__(self):
self.res = []
def get_binary_tree_paths(self, root):
if not root:
return []
self.helper(root, [])
return self.res
def helper(self, node, temp):
if not node.left and not node.right:
self.res.append(temp + [node.val])
if node.left:
self.helper(node.left, temp + [node.val])
if node.right:
self.helper(node.right, temp + [node.val])
推荐阅读
- amazon-web-services - AWS:如何在引导时保证静态私有 IP 的可用性
- python - 如何使用 fb-hydra 记录标准输出和标准错误输出?
- selenium - bind() 失败:在服务器中执行基于 Selenium 的自动化测试时无法分配请求的地址 (99) 错误
- google-cloud-platform - Google VM 实例自行初始化
- git - 将本地文件中的更新推送到 github 存储库时出错
- azure - Azure Synapse Analytics 中表的分区到期
- typescript - 即使我有一个用户定义的类型保护来检查它是否不是,值也可能是未定义的
- c# - 运算符“==”不能应用于错误类型的操作数
- c# - 统一的变体网络多人游戏
- node.js - 尝试安装节点包时遇到错误代码 ENOENT syscall rename errno -4058