解法一:深度优先搜索
深搜,没啥特别的。
import java.util.LinkedList;
import java.util.List;
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
List<List<Integer>> ans;
public List<List<Integer>> pathSum(TreeNode root, int sum) {
ans = new LinkedList<>();
dfs(root, sum, new LinkedList<>());
return ans;
}
private void dfs(TreeNode root, final int sum, List<Integer> nums) {
if (root == null) {
return;
}
nums.add(root.val);
if ((root.left == null) && (root.right == null)) {
int temp = 0;
for (int i : nums) {
temp += i;
}
if (temp == sum) {
ans.add(new LinkedList<>(nums));
}
nums.remove(nums.size() - 1);
return;
}
dfs(root.left, sum, nums);
dfs(root.right, sum, nums);
nums.remove(nums.size() - 1);
}
}