题解 | #二叉树中和为某一值的路径#

二叉树中和为某一值的路径

http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca

【剑指offer】二叉树中和为某一值的路径(python)

  1. python创建新列表的方法之一,就是直接把元素用方括号括起来,这里 return [str(root.val)] 就直接返回了一个列表。
  2. DFS深度遍历,得到所有路径,再判断路径和是否等于目标值。
  3. map() 会根据提供的函数对指定序列做映射。map(function, iterable, ...)
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。这里直接用了一个 int 做类型转换。
  4. DFS中直接使用 += 做列表合并。包括 [str(root.val) + '-' + path for path in self.dfs(root.left)]也使用了 + 直接列表合并。
  5. 参考“删除链表中重复的点”,用到了filter,res = list(filter(lambda c: res.count(c)==1, res))
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
    这里是list(map(..,...))
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
     # 返回二维列表,内部每个列表表示找到的路径
     def FindPath(self, root, expectNumber):
         # write code here
         res = []
         path = self.dfs(root)
         for i in path:
             if sum(map(int,i.split('-')))==expectNumber:
                 res.append(list(map(int,i.split('-'))))
         return res
     def dfs(self,root):
         if not root:
             return []
         if not root.left and not root.right:
             return [str(root.val)]
         path = [str(root.val)+'-'+path for path in self.dfs(root.left)]
         path += [str(root.val)+'-'+path for path in self.dfs(root.right)]
         return path
全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务