题目传送:​​https://leetcode.cn/problems/path-sum-ii/​

运行效率

Leetcode113. 路径总和 II_算法

代码如下

class Solution {
public List<List<Integer>> pathSum(TreeNode root, int targetSum) {
List<List<Integer>> result = new ArrayList<>();
//处理边界情况
if (root == null) {
return result;
}
//说明是叶子节点
if (root.left == null && root.right == null) {
if (root.val == targetSum) {
List<Integer> list = new ArrayList<>();
list.add(root.val);
result.add(list);
}
return result;
}

List<List<Integer>> list=new ArrayList<>();
//如果左子树存在
if (root.left != null) {
list = pathSum(root.left, targetSum - root.val);
}
//如果右子树存在
if (root.right != null) {
List<List<Integer>> list1 = pathSum(root.right, targetSum - root.val);
list.addAll(list1);
}
for(List<Integer> item:list){
List<Integer> list1 = new ArrayList<>(item);
list1.add(0,root.val);
result.add(list1);
}
return result;
}
}