1. 问题背景与核心思路
在二叉树相关算法题中,"路径和"问题是一类经典题型。题目要求找出所有从根节点到叶子节点的路径,使得路径上节点值之和等于给定目标值。这类问题在实际面试中出现频率极高,考察的是对二叉树遍历和递归思想的理解深度。
我第一次遇到这个问题是在准备技术面试时,当时被卡住的关键点在于如何正确维护路径状态。经过反复调试和思考,最终总结出一套清晰的解题框架。下面分享我的完整解题思路和实现细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 递归解法核心逻辑
2.1 基础递归框架
递归解法的核心在于深度优先搜索(DFS)遍历。我们需要维护两个关键变量:
- 当前路径的节点列表
- 当前路径的累加和
python复制def hasPathSum(root, target):
if not root:
return False
path = []
return dfs(root, target, path)
2.2 递归终止条件
递归需要处理三种边界情况:
- 到达空节点:直接返回False
- 到达叶子节点:判断当前和是否等于目标值
- 非叶子节点:继续递归左右子树
python复制def dfs(node, target, path):
if not node:
return False
path.append(node.val)
# 叶子节点判断
if not node.left and not node.right:
if sum(path) == target:
return True
else:
path.pop()
return False
# 非叶子节点递归
left = dfs(node.left, target, path)
right = dfs(node.right, target, path)
path.pop()
return left or right
2.3 路径维护技巧
关键点在于路径列表的维护:
1.
