题目描述
思路分析
二叉树+dfs
代码实现
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> path;
vector<vector<int>> ans;
vector<vector<int> > FindPath(TreeNode* root,int k) {
if(!root) return ans;
dfs(root,k);
return ans;
}
void dfs(TreeNode* root,int k){
if(!root->left&&!root->right){
if(k==root->val){
path.push_back(root->val);
ans.push_back(path);
path.pop_back();
}
return;
}
if(root->left){
path.push_back(root->val);
dfs(root->left,k-root->val);
path.pop_back();
}
if(root->right){
path.push_back(root->val);
dfs(root->right,k-root->val);
path.pop_back();
}
}
};