257.二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。叶子节点:没有子节点的节点。
输入:
1
/ \
2 3
\
5
输出: ["1->2->5", "1->3"]
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def binaryTreePaths(self, root: TreeNode) -> List[str]:
def construct_paths(root, path):
if root:
path += str(root.val)
if not root.left and not root.right: # 当前节点是叶子节点
paths.append(path) # 把路径加入到答案中
else:
path += '->' # 当前节点不是叶子节点,继续递归遍历
construct_paths(root.left, path)
construct_paths(root.right, path)
paths = []
construct_paths(root, '')
return paths
"""
递归。在递归遍历二叉树时,需要考虑当前的节点和它的孩子节点。
如果当前的节点不是叶子节点,则在当前的路径末尾添加该节点,并递归遍历该节点的每一个孩子节点。
如果当前的节点是叶子节点,则在当前的路径末尾添加该节点后,就得到了一条路径,把该路径加入答案。
"""