码迷,mamicode.com
首页 > 其他好文 > 详细

*Path Sum II

时间:2015-08-05 06:38:24      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

题目:

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]
]


题解
这道题除了要判断是否有这样的一个path sum,还需要把所有的都可能性结果都返回,所以就用传统的DFS递归解决子问题。代码如下:


 1 public void pathSumHelper(TreeNode root, int sum, List <Integer> sumlist, List<List<Integer>> pathlist){
 2         if(root==null) 
 3             return;
 4         sumlist.add(root.val);
 5         sum = sum-root.val;
 6         if(root.left==null && root.right==null){
 7             if(sum==0){
 8                 pathlist.add(new ArrayList<Integer>(sumlist));
 9             }
10         }else{
11             if(root.left!=null)
12                 pathSumHelper(root.left,sum,sumlist,pathlist);
13             if(root.right!=null)
14                 pathSumHelper(root.right,sum,sumlist,pathlist);
15         }
16         sumlist.remove(sumlist.size()-1);
17     }
18     
19     public List<List<Integer>> pathSum(TreeNode root, int sum) {
20         List<List<Integer>> pathlist=new ArrayList<List<Integer>>();
21         List<Integer> sumlist = new ArrayList<Integer>();
22         pathSumHelper(root,sum,sumlist,pathlist);
23         return pathlist;
24     }

 

reference:http://www.cnblogs.com/springfor/p/3879827.html

 







*Path Sum II

标签:

原文地址:http://www.cnblogs.com/hygeia/p/4703656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!