二叉树和为某一值的路径(递归全局变量回溯)
二叉树中和为某一值的路径
http://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca
/*
两个递归口,之间是递归先后关系
递归口的前后语句(操作)代表边走边操作(从前往后),后面的语句代表每个递归口退出都要进行操作(从后往前操作),
*/
class Solution {
public:
vector<vector<int> > ans;
vector<int> path;
void dfs(TreeNode* cur, int value){
if(!cur || value < 0) return;
value -= cur->val;
path.push_back(cur->val);
if(value == 0 && !cur->left && !cur->right) ans.push_back(path);
dfs(cur->left, value);
dfs(cur->right, value);
path.pop_back(); //两个递归出口推出递归时都会执行这一句
}
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
dfs(root, expectNumber);
return ans;
}
};