Path Sum II leetcode java


題目

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     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM