二叉树输出总的根节点到指定结点的路径长度的算法怎么写
时间: 2024-12-15 22:20:19 浏览: 6
在二叉树中计算从根节点到指定结点的路径长度,通常涉及到深度优先搜索(Depth-First Search, DFS)。下面是一个基本的递归算法示例,假设我们有一个`TreeNode`结构,其中包含`val`(节点值)、`left`(左子节点)和`right`(右子节点):
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def path_length_to_node(root, target):
def dfs(node, current_path, path_len):
if not node:
return
# 如果到达目标节点,返回当前路径长度加一
if node.val == target.val:
return path_len + 1
# 递归遍历左子节点和右子节点,并累加路径长度
path_len[left] = path_len.get(left, 0) + 1
path_len[right] = path_len.get(right, 0) + 1
dfs(node.left, path_len, path_len[node])
dfs(node.right, path_len, path_len[node])
path_len = {None: 0} # 初始化一个空字典存储路径长度
dfs(root, path_len, 0)
return path_len[None]
```
这个函数会返回从根节点到指定节点的最短路径长度。如果找不到该节点,则返回0。注意,这里假设每个节点的引用都被存储在一个全局变量`path_len`中,以追踪路径长度。
阅读全文