-
题目链接 https://leetcode-cn.com/problems/path-sum-ii/submissions/
-
题目描述
- 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
-
给定如下二叉树,以及目标和
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)
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
- python(DFS)
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
- python (BFS)
leetcode 113. 路径总和 II
最新推荐文章于 2022-08-29 15:32:13 发布