求二叉树中所有叶子结点到根结点的路径
时间: 2024-11-24 17:40:57 浏览: 49
在计算机科学中,求二叉树中从所有叶子节点到根节点的所有路径,通常涉及到深度优先搜索(Depth-First Search, DFS)算法。这种问题可以使用递归的方式来解决。对于每个节点:
1. 如果节点是叶子节点(即没有左孩子和右孩子),将其添加到路径列表中,并记录当前路径。
2. 对于非叶子节点,分别对它的左右子节点递归地查找路径,将结果合并。如果子节点的路径包含了根节点,那么这个路径就是我们要找的。
以下是伪代码示例:
```python
def find_leaf_to_root_paths(root):
def dfs(node, path):
if node is None:
return []
# 如果是叶子节点,加入路径并返回
if not node.left and not node.right:
return [path + [node.val]]
# 非叶子节点,继续对子节点递归
left_paths = dfs(node.left, path + [node.val])
right_paths = dfs(node.right, path + [node.val])
# 合并左右子节点的结果
return left_paths + right_paths
return dfs(root, [])
```
运行该函数会返回一个包含所有从叶子节点到根节点路径的列表。
阅读全文