给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 sum = 22
,
5 / 4 8 / / 11 13 4 / / 7 2 5 1
返回:
[ [5,4,11,2], [5,8,4,5] ]
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> res = new ArrayList<>(); if(root == null) return res; bt(root,sum,new ArrayList<Integer>(),res); return res; } private void bt(TreeNode root,int sum,ArrayList<Integer> list,List<List<Integer>> res){ if(root == null) return; list.add(root.val); sum -= root.val; if(root.left == null && root.right == null && sum == 0){ res.add(new ArrayList<>(list)); // return; } bt(root.left,sum,list,res); bt(root.right,sum,list,res); sum += root.val; list.remove(list.size() - 1); } }