点击打开链接
//找出所有的情况,因此需要回溯
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <cstring>
#include <string.h>
#include <algorithm>
#include <vector>
#include <numeric>
#include <limits>
#include <math.h>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
void dfs(TreeNode* root, int rest, vector<int>& path, vector<vector<int>>& res)
{
if(root==NULL) return;
path.push_back(root->val);
rest -= root->val;
if(root->left==NULL && root->right==NULL){
if(rest==0){
res.push_back(path);
}
}
else{
if(root->left)
dfs(root->left, rest, path, res);
if(root->right)
dfs(root->right, rest, path, res);
}
path.pop_back();
}
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> res;
vector<int> path;
dfs(root, sum, path, res);
return res;
}
};
int main()
{
return 0;
}