Path Sum II

来源:互联网 发布:男人心目中的女神 知乎 编辑:程序博客网 时间:2024/05/16 09:02

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

For example:
Given the below binary tree and sum = 22,
              5             / \            4   8           /   / \          11  13  4         /  \    / \        7    2  5   1

return

[   [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 List<List<Integer>> pathSum(TreeNode root, int sum) {        List<List<Integer>> results = new ArrayList<List<Integer>>();        ArrayList<Integer> result= new ArrayList<Integer>();                pSum(root, sum, results, result);        return results;    }    public void pSum(TreeNode root, int sum, List<List<Integer>> results, ArrayList<Integer> result){         if((root==null)&&(result.size()==0)){                return;               }else if((root.val==sum)&&(root.left==null&&root.right==null)){            result.add(root.val);            results.add(result);            return;        }else{            if(root.left!=null&&root.right!=null){                result.add(root.val);                ArrayList<Integer> res= new ArrayList<Integer>();                for(int i=0;i<result.size();i++){                    res.add(result.get(i));                }                pSum(root.left, sum-root.val, results, result);                pSum(root.right, sum-root.val, results, res);                return ;            }            else if(root.left!=null&&root.right==null){                result.add(root.val);                pSum(root.left, sum-root.val, results, result);                //pSum(root.right, sum-root.val, results, result);                return ;            }            else if(root.left==null&&root.right!=null){                result.add(root.val);                //pSum(root.left, sum-root.val, results, result);                pSum(root.right, sum-root.val, results, result);                return;            }            return ;                    }    }}


0 0
原创粉丝点击