python牛客84二叉树和为某一值的路径3
时间: 2023-09-17 11:00:48 浏览: 151
题目要求:给定一个二叉树和一个整数target,找出所有从根节点到叶子节点路径之和等于target的路径。
解题思路:可以使用深度优先搜索(DFS)的方法来解决该问题。首先定义一个辅助函数来进行递归搜索,该辅助函数的参数包括当前节点、当前路径、当前路径的和以及目标和。在搜索过程中,需要维护一个数组来保存当前节点到根节点的路径。搜索过程如下:
1. 如果当前节点为空,则返回。
2. 将当前节点的值添加到当前路径中。
3. 将当前节点的值累加到当前路径的和中。
4. 如果当前节点是叶子节点,且当前路径的和等于目标和,则将当前路径添加到结果中。
5. 递归地搜索当前节点的左子树和右子树,并传递更新后的当前路径和当前路径的和。
最后,在主函数中调用辅助函数,并返回结果即可。
以下是题目的完整代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def pathSum(root, target):
def dfs(node, path, path_sum, target, res):
if not node:
return
path.append(node.val)
path_sum += node.val
if not node.left and not node.right: # 当前节点是叶子节点
if path_sum == target:
res.append(path[:]) # 注意需要复制一份path,否则会出现问题
dfs(node.left, path, path_sum, target, res)
dfs(node.right, path, path_sum, target, res)
path.pop() # 回溯到父节点,去掉当前节点
path_sum -= node.val
res = []
dfs(root, [], 0, target, res)
return res
```
这样就能找出所有满足路径和等于目标和的路径了。
阅读全文