您的位置:首页 > 其它

leetcode 113. 路径总和 II

2019-03-12 21:03 302 查看
  1. 题目链接 https://leetcode-cn.com/problems/path-sum-ii/submissions/

  2. 题目描述

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
  3. 给定如下二叉树,以及目标和 

    sum = 22

    5
    / \
    4   8
    /   / \
    11  13  4
    /  \    / \
    7    2  5   1

    返回:

    [
    [5,4,11,2],
    [5,8,4,5]
    ]
  • 解题思路

      DFS or BFS
  • 代码

      python (BFS)
      [code]class Solution:
      def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
      if not root: return []
      
      from queue import deque
      q = deque([[root, root.val, [root.val]]])
      res = []
      while q:
      cur = q.popleft()
      if  not cur[0].left and not cur[0].right and cur[1] == sum:
      res.append(cur[2])
      continue
      
      if cur[0].left:
      q.append([cur[0].left, cur[1] + cur[0].left.val, cur[2] + [cur[0].left.val]])
      if cur[0].right:
      q.append([cur[0].right, cur[1] + cur[0].right.val, cur[2] + [cur[0].right.val]])
      return res

       

    1. python(DFS)
      [code]class Solution:
      def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
      if not root:return []
      ans = []
      def _dfs(root, sum, res):
      nonlocal ans
      if not root.left and not root.right  and sum - root.val == 0:
      return ans.append(res + [root.val])
      if root.left:
      _dfs(root.left, sum - root.val, res + [root.val])
      if root.right:
      _dfs(root.right, sum - root.val , res + [root.val])
      _dfs(root, sum, [])
      return ans

       

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: