- 题目:找出所有从根节点到叶子节点的路径,使得路径节点值之和等于sum
- 难度:Medium
- 思路:先序遍历二叉树,将当前结果加入结果集tmpList中,遍历的过程中,不断更新sum,直到sum等于node.val
- 代码:
public class Solution {
public List<List<Integer>> pathSum(TreeNode root, int sum) {
List<List<Integer>> result = new ArrayList<>();
if(root == null){
return result;
}
helper(result, new ArrayList<>(), sum, root);
return result;
}
public void helper(List<List<Integer>> list, List<Integer> tmp, int sum, TreeNode node){
tmp.add(node.val);
if(node.val == sum && node.left == null && node.right == null){
list.add(tmp);
return;
}
if(node.left != null){
helper(list, new ArrayList<>(tmp), sum-node.val, node.left);
}
if(node.right != null){
helper(list, new ArrayList<>(tmp), sum-node.val, node.right);
}
}
}