dfs链式二叉树查找路径
时间: 2023-12-07 17:04:55 浏览: 137
以下是使用DFS算法在链式二叉树中查找路径的Python代码示例:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def find_path(root, target):
if not root:
return []
res = []
dfs(root, target, [], res)
return res
def dfs(root, target, path, res):
if not root:
return
path.append(root.val)
if root.val == target and not root.left and not root.right:
res.append(path[:])
dfs(root.left, target, path, res)
dfs(root.right, target, path, res)
path.pop()
```
上述代码中,我们定义了一个`TreeNode`类来表示二叉树的节点。`find_path`函数接收二叉树的根节点和目标值`target`作为输入,返回所有从根节点到叶子节点的路径,使得路径上的节点值之和等于目标值`target`。该函数内部调用了`dfs`函数来实现深度优先搜索。
`dfs`函数接收当前节点`root`、目标值`target`、当前路径`path`和结果列表`res`作为输入。在函数内部,我们首先将当前节点的值加入到路径中,然后判断当前节点是否为叶子节点且路径上的节点值之和等于目标值。如果是,则将当前路径加入到结果列表中。接着,我们递归地遍历当前节点的左右子树,并在遍历完后将当前节点从路径中弹出。
阅读全文