/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ classSolution{ //存放结果 List<List<Integer>> result = new ArrayList<>(); public List<List<Integer>> pathSum(TreeNode root, int sum) { //临时链表,用来存放满足条件的一条路径 LinkedList<Integer> temp = new LinkedList<>(); dfs(root, sum, temp); return result; }
voiddfs(TreeNode node, int sum, LinkedList<Integer> temp){ //当结点为空时返回 if (node == null) return;
//如果不为空,将当前结点的值添加到临时链表中,同时sum减去当前结点的值 temp.add(node.val); sum = sum - node.val;
//如果当前结点时叶子结点且该路径数值之和等于sum,那么将该条满足条件的路径添加到result数组中 if (node.left == null && node.right == null && sum == 0) { result.add(new LinkedList<>(temp)); temp.pollLast(); return; }