/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
vector<vector<int> > p;
vector<int> p1;
public:
vector<vector<int> > FindPath(TreeNode* root,int expectNumber)
{if(root) find(root,expectNumber);
return p;}
void find(TreeNode* root,int target){
if(root!=NULL)
{
p1.push_back(root->val);
if(root->val==target&&root->left==NULL&&root->right==NULL)
p.push_back(p1);
else
{
if(root->left) find(root->left,target-root->val);
if(root->right) find(root->right,target-root->val);
}//当程序执行到这里的时候,一定会到达叶结点,那么需要往回退一格
p1.pop_back();//当你找到一个路径或者到达叶节点的时候之后,你需要将这条路径的叶结点(可能是左节点)去掉,以便查找(右结点)是否满足
}
}
};
原文:http://www.cnblogs.com/cxy931980808/p/6626165.html