For example:
Given the below binary tree and
sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1return
[ [5,4,11,2], [5,8,4,5] ]
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) { ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>(); if(root==null) { return ret; } ArrayList<Integer> ins = new ArrayList<Integer>(); visit(root, sum, ins, 0, ret); return ret; } private void visit(TreeNode node, int sum, ArrayList<Integer> ins, int cur, ArrayList<ArrayList<Integer>> ret) { cur += node.val; ins.add(node.val); if(node.left==null && node.right==null && cur==sum) { ArrayList<Integer> good = new ArrayList<Integer>(ins); ret.add(good); } else { if(node.left!=null) { visit(node.left, sum, ins, cur, ret); } if(node.right!=null) { visit(node.right, sum, ins, cur, ret); } } sum -= node.val; ins.remove(ins.size()-1); } }
没有评论:
发表评论