用list打印二叉树的所有路径
一、用list返回二叉树的所有路径
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution(object):
def findAllPaths(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if not root:
return []
res = []
road = []
self.pre_DFS(root, res, road)
return res
# 前序式DFS
# 注意每趟递归前要将当前节点pop()掉
def pre_DFS(self, node, res, road):
# 当前节点为空,直接return
if not node:
return
# 否则将当前节点加入路径中
road.append(node.val)
# 当前节点是叶子则将路径加入外层list中
if not node.left and not node.right:
res.append(list(road))
# 前序式递归当前节点的左右子树
self.pre_DFS(node.left, res, road)
self.pre_DFS(node.right, res, road)
# 每趟递归前将当前节点pop()
road.pop()
# 返回外层list
return res
if __name__ == '__main__':
root = TreeNode(3)
node2 = TreeNode(2)
node7 = TreeNode(7)
node5 = TreeNode(5)
root.left = node2
root.right = node7
node2.right = node5
s = Solution()
print(s.findAllPaths(root))
运行截图:
二、用字符串返回二叉树的所有路径
class Solution(object):
def findAllPaths(self, root):
"""
:type root: TreeNode
:rtype: List[str]
"""
if not root:
return []
res = []
return self.pre_DFS(root, res, "")
def pre_DFS(self, root, res, road):
if root:
road += str(root.val)
if not root.left and not root.right:
res.append(road)
else:
road += '->'
self.pre_DFS(root.left, res, road)
self.pre_DFS(root.right, res, road)
return res
运行截图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步