求二叉树结点路径
时间: 2024-01-23 14:06:12 浏览: 66
对于一棵二叉树,如果我们想要查找从根节点到某个指定节点的路径,通常可以使用深度优先搜索的方式进行遍历,同时记录下经过的路径。以下是一个示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def find_path(root, target):
if not root:
return []
res = []
def dfs(node, path):
if not node:
return
if node.val == target:
res.append(path + [node.val])
return
dfs(node.left, path + [node.val])
dfs(node.right, path + [node.val])
dfs(root, [])
return res[0] if res else []
```
在上面的代码中,我们使用了深度优先搜索的方式遍历二叉树,并且使用一个数组 path 记录下经过的路径。如果遍历到当前节点的值与目标节点的值相等,就将当前路径加入到结果数组 res 中。最后返回结果数组中的第一个路径即可。
需要注意的是,上面的代码中使用了一个嵌套函数 dfs,这是因为我们需要在遍历过程中不断更新 path 的值,而如果直接使用一个全局变量会存在多个线程同时访问的问题。为了避免这个问题,我们使用了一个嵌套函数来实现递归。
阅读全文