257. 二叉树的所有路径
力扣题目链接(opens new window)
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
思路:在叶子节点收割结果,如果不是叶子节点,则依次处理左右子树,在处理左右子树的具体逻辑里递归+回溯
# 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]:result = []if root is None:return resultpath = []self.backtracking(root, path, result)return resultdef backtracking(self, root: Optional[TreeNode], path, result) -> None:path.append(root.val)if root.left is None and root.right is None:path_str = ''for i in range(len(path) - 1):path_str += f'{path[i]}->'path_str += f'{path[-1]}'result.append(path_str)returnif root.left is not None:self.backtracking(root.left, path, result)path.pop()if root.right is not None:self.backtracking(root.right, path, result)path.pop()return