题目描述
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。
输入输出
1 | 输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22 |
基本思路
pathSum(root, sum)
- 初始化:结果列表
res
路径列表path
- 返回值:返回
res
即可
recur(root, tar)
- 递推参数:当前节点
root
当前目标值tar
- 终止条件:若节点
root
为空 则直接返回 - 递推工作:
- 路径更新: 将当前节点值
root.val
加入路径path
- 目标值更新:
tar = tar - root.val
(即目标值tar
从sum
减至 0 ) - 路径记录: 当 ①
root
为叶节点 且 ② 路径和等于目标值 ,则将此路径path
加入res
- 先序遍历: 递归左 / 右子节点
- 路径恢复: 向上回溯前,需要将当前节点从路径 path 中删除,即执行
path.pop()
- 路径更新: 将当前节点值
java实现
1 | class Solution { |