题目传送:https://leetcode.cn/problems/path-sum-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;
}
}