コード例 #1
0
 void sumHelper(TreeNode *root,int psum)
 {
     if(root == NULL) {
         return;
     }
     psum = 10 * psum + root->val;
     if(root->left == NULL && root->right == NULL) {
         sum += psum;
     } 
     if(root->left != NULL) {
         sumHelper(root->left,psum);
     }
     if(root->right != NULL) {
         sumHelper(root->right,psum);
     }
 }
コード例 #2
0
ファイル: CombinationSum.cpp プロジェクト: suifengls/LeetCode
    vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
	vector<vector<int> > result;
	vector<int> com;
	if(candidates.empty())
	    return result;
	sort(candidates.begin(), candidates.end());
	sumHelper(candidates, target, result, com, 0, 0);
	return result;
    }
コード例 #3
0
ファイル: CombinationSum.cpp プロジェクト: suifengls/LeetCode
    void sumHelper(vector<int> &candidates, int target, vector<vector<int> > &result, vector<int> &com, int sum, int k)
        {
	    if(sum > target)
		return;
	    else if(sum == target)
		result.push_back(com);
	    else
	    {
		for(int i = k; i < candidates.size(); ++i)
		{
		    com.push_back(candidates[i]);
		    sumHelper(candidates, target, result, com, sum+candidates[i], i);
		    com.pop_back();
		}
	    }
	}
コード例 #4
0
 int sumNumbers(TreeNode *root) {
     sum = 0;
     sumHelper(root,0);
     return sum;
 }