牛客 找出二叉树中和为某一值的路径
/* 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();//当你找到一个路径或者到达叶节点的时候之后,你需要将这条路径的叶结点(可能是左节点)去掉,以便查找(右结点)是否满足 } } };