【题目描述】
最终返回一个列表,所以用一个列表在函数之间传递,当遇到叶子节点时用于保存字符串;那么说到字符串,这个字符串也需要从根向下传递,并且不断向字符串中添加内容,以及箭头符号,来组成最终的从根节点到叶节点的字符串指向。字符串中先加入当前节点,再对其左右子节点执行深度优先搜索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_)