二叉树所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [1,2,3,null,5]
输出:["1->2->5","1->3"]
重点:
- 通过前序遍历,将所有节点串联,并且递归自带隐式回溯
- 终止条件if not root.left and not root.right:
- 递归函数参数以及返回值的确定 def dfs(root, path):
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
# 整体采用了前序遍历
class Solution:
def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:
res = []
# 递归函数参数以及返回值
def dfs(root, path):
if not root:
return []
if root:
path += str(root.val)
# 终止条件
if not root.left and not root.right:
res.append(path)
else:
# 单层递归
path += '->'
dfs(root.left, path)
dfs(root.right, path)
dfs(root, "")
return res