257. 二叉树的所有路径(递归+回溯)
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 result
        path = []
        self.backtracking(root, path, result)
        return result
    def 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)
            return
        if 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
        