zoukankan      html  css  js  c++  java
  • LeetCode: Path Sum 2

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

    This is a very elegant Solution: 

     1 class Solution {
     2 public:
     3     vector<vector<int> > solSet;
     4     vector<int> sol;
     5     void solve(TreeNode* root, int sum){
     6         if ( (root->left==NULL) && (root->right==NULL) && (sum-root->val==0) ) { 
     7             sol.push_back(root->val); 
     8             solSet.push_back(sol);      
     9             return;    
    10         }
    11         sol.push_back(root->val);
    12         if (root->left !=NULL){
    13             solve(root->left, sum-root->val);
    14             sol.pop_back();        //记住需要pop_back
    15         }
    16         if (root->right!=NULL){
    17         solve(root->right, sum-root->val);    
    18         sol.pop_back();
    19         }
    20          
    21     }
    22      
    23  
    24     vector<vector<int> > pathSum(TreeNode *root, int sum) {
    25         // Start typing your C/C++ solution below
    26         // DO NOT write int main() function
    27         sol.clear();
    28         solSet.clear();
    29         if (root==NULL) {return solSet;}
    30         solve(root, sum);
    31         return solSet;
    32     }
    33 };

    This problem deserved  to be rehacking 

  • 相关阅读:
    iOS网络开发之AFNetworking
    TCP/IP、Http、Socket的区别
    iOS开发
    iOS 10相关技术
    HTTP协议详解
    HTTPS和HTTP的区别
    CocoaPods
    关于 iOS 10 中 ATS 的问题
    Run Loop详解
    iOS开发项目之MVC与MVVM
  • 原文地址:https://www.cnblogs.com/yeek/p/3634691.html
Copyright © 2011-2022 走看看