zoukankan      html  css  js  c++  java
  • leetcode------Path Sum II

    标题: Path Sum II
    通过率: 26.7%
    难度: 中等

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

    与第一个版本一样,但是本次要求的是讲所以可能全部输出,那么就需要一个临时的list去保存,如果不等于则弹出最后一个。

    具体代码:

     1 /**
     2  * Definition for binary tree
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 public class Solution {
    11     public ArrayList<ArrayList<Integer>> pathSum(TreeNode root, int sum) {
    12         ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
    13         ArrayList<Integer> tmp=new ArrayList<Integer>();
    14         int sumtmp=0;
    15         dfs(res,tmp,root,sum,sumtmp);
    16         return res;
    17     }
    18     public void dfs(ArrayList<ArrayList<Integer>> res,ArrayList<Integer> tmp,TreeNode root, int sum,int sumtmp){
    19         if(root==null) return;
    20         sumtmp+=root.val;
    21         tmp.add(root.val);
    22         if(root.left==null&&root.right==null&&sumtmp==sum){
    23             res.add(new ArrayList<Integer>(tmp));
    24         }
    25         if(root.left!=null) dfs(res,tmp,root.left,sum,sumtmp);
    26         if(root.right!=null)dfs(res,tmp,root.right,sum,sumtmp);
    27         sumtmp-=root.val;
    28         tmp.remove(tmp.size()-1);
    29     }
    30 }
  • 相关阅读:
    such用法
    divorce用法
    towel用法
    go for用法
    catch on用法
    incredibly用法
    mess用法
    dentist用法
    steer clear of用法
    incredible
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4350799.html
Copyright © 2011-2022 走看看