可以使用深度优先搜索(DFS)来遍历二叉树,并记录从根节点到叶子节点的所有路径。以下是 Python 代码实现:
from typing import Optional, List
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def binaryTreePaths(root: Optional[TreeNode]) -> List[str]:
def dfs(node, path):
if not node:
return
path.append(str(node.val)) # 记录当前节点
if not node.left and not node.right: # 叶子节点
res.append("->".join(path)) # 记录路径
else:
dfs(node.left, path[:]) # 递归左子树
dfs(node.right, path[:]) # 递归右子树
res = []
dfs(root, [])
return res
思路解析:
- 使用深度优先搜索(DFS)遍历二叉树。
- 维护一个
path
列表,用于存储从根节点到当前节点的路径。 - 遇到叶子节点时,将路径转换为字符串(
"->"
连接)并存入结果列表res
。 - 递归遍历左子树和右子树,每次传递
path[:]
以避免修改原列表。
示例:
# 构造二叉树
root = TreeNode(1)
root.left = TreeNode(2, right=TreeNode(5))
root.right = TreeNode(3)
print(binaryTreePaths(root))
# 输出: ["1->2->5", "1->3"]
这样就能得到所有从根到叶子的路径!🚀