每日一道算法题--leetcode 257--二叉树的所有路径--python

472 阅读1分钟

【题目描述】

【思路解析】

最终返回一个列表,所以用一个列表在函数之间传递,当遇到叶子节点时用于保存字符串;那么说到字符串,这个字符串也需要从根向下传递,并且不断向字符串中添加内容,以及箭头符号,来组成最终的从根节点到叶节点的字符串指向。字符串中先加入当前节点,再对其左右子节点执行深度优先搜索dfs函数即可。 这种方法每个节点只会被访问一次,时间复杂度为O(n)。 此题比较简单,是深度优先的基础题目。一次通过开心~

【源代码】

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