程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Path Sum II

Path Sum II

編輯:C++入門知識

Question: 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] ] Anwser 1:      [cpp]  /**   * Definition for binary tree   * struct TreeNode {   *     int val;   *     TreeNode *left;   *     TreeNode *right;   *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}   * };   */   class Solution {   public:       void calPath(TreeNode *root, int sum, vector<int> tmp, vector< vector<int> > &ret){           if(root == NULL){               return;           }                      tmp.push_back(root->val);           if(sum == root->val && root->left == NULL && root->right == NULL){               ret.push_back(tmp);           }                      calPath(root->left, sum - root->val, tmp, ret);           calPath(root->right, sum - root->val, tmp, ret);                      tmp.pop_back();       }          vector<vector<int> > pathSum(TreeNode *root, int sum) {           // Start typing your C/C++ solution below           // DO NOT write int main() function           vector< vector<int> > ret;                      if(root == NULL) {               return ret;           }                      vector<int> tmp;           calPath(root, sum, tmp, ret);           return ret;       }   };       Anwser 2:     [cpp] /**   * Definition for binary tree   * struct TreeNode {   *     int val;   *     TreeNode *left;   *     TreeNode *right;   *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}   * };   */   class Solution {   public:       void calPath(TreeNode *root, int sum, vector<int> tmp, vector< vector<int> > &ret){           if(root == NULL){               return;           }                      tmp.push_back(root->val);           if(sum == root->val && root->left == NULL && root->right == NULL){               ret.push_back(tmp);               tmp.pop_back();     // pop tmp vector               return;           }                      calPath(root->left, sum - root->val, tmp, ret);           calPath(root->right, sum - root->val, tmp, ret);                      tmp.pop_back();       }          vector<vector<int> > pathSum(TreeNode *root, int sum) {           // Start typing your C/C++ solution below           // DO NOT write int main() function           vector< vector<int> > ret;                      if(root == NULL) {               return ret;           }                      vector<int> tmp;           calPath(root, sum, tmp, ret);           return ret;       }   };    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved