力扣(leetcode) 257. 二叉树的所有路径 (递归)

题目在这:https://leetcode-cn.com/problems/binary-tree-paths/

思路分析:

找二叉树的所有路径,即从根节点到每个叶子节点的路径,中间用 ->符号进行链接。
我们从上到下开始遍历,使用一个变量临时temp存储期间遍历过的节点,直到最后的叶子结点。

当碰到叶子节点的时候,我们将所有记录过的temp里的值都放到数组中。

注意:这里所说的temp是临时变量,并不是真记录,而是传值性质的记录。不是真的设置了一个 temp变量,而是传值,该临时变量会随着函数调用或者回调的而改变。

完整代码:

 def binaryTreePaths(self, root: TreeNode) -> List[str]:
        res = []
        if not root:
            return []
        def dfs(root,temp):
            if not root:
                return 
            if root and not root.left and not root.right:
                res.append(temp + str(root.val))      
            if root.left:
                dfs(root.left,temp + str(root.val) + '->')
            if root.right:
                dfs(root.right,temp + str(root.val) + '->')
        dfs(root,'')
        return res

你可能感兴趣的:(leetcode,python)