class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<Integer> temp = new ArrayList<>();
List<List<Integer>> res = new ArrayList<List<Integer>>();
dfs(root, 0, temp, res, sum);
return res;
}
public void dfs(TreeNode root, int curSum, List<Integer> temp, List<List<Integer>> res, int sum) {// 求从root到叶子的和
// 参数1
if (root == null)
return;// 不能再继续深入了
// 我只处理root
curSum += root.val;
temp.add(root.val);
// 找到一解
if (root.left == null && root.right == null && curSum == sum) {
res.add(new ArrayList<>(temp));
}
dfs(root.left, curSum, temp, res, sum);
dfs(root.right, curSum, temp, res, sum);
curSum -= root.val;
temp.remove(temp.size() - 1);
}
}
leetcode-113. 路径总和 II
猜你喜欢
转载自blog.csdn.net/qq_39370495/article/details/86646189
今日推荐
周排行