34. 二叉树中和为某一值的路径
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
示例:
给定如下二叉树,以及目标和 sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
返回:
[ [5,4,11,2], [5,8,4,5] ]
提示:
节点总数 <= 10000
class Solution { public List<List<Integer>> pathSum(TreeNode root, int sum) { List<List<Integer>> lists = new ArrayList<>(); dfs(root,sum,new ArrayList<Integer>(),lists); return lists; } private void dfs(TreeNode node,int sum,List<Integer> list,List<List<Integer>> lists){ if(node == null) return; list.add(node.val); sum -= node.val; if(sum == 0 && node.left == null && node.right == null){ lists.add(new ArrayList(list)); // 一起 // list.remove(list.size() - 1); // return; } dfs(node.left,sum,list,lists); dfs(node.right,sum,list,lists); list.remove(list.size() - 1); } }
一回生,二回熟