题解 | #二叉树根节点到叶子节点和为指定值的路径#
二叉树根节点到叶子节点和为指定值的路径
http://www.nowcoder.com/questionTerminal/840dd2dc4fbd4b2199cd48f2dadf930a
思路
- DFS
- “恢复现场”意思是,在递归之后,说明“递归的一条路走到头了”,path长度为n-1,此时要把path中的最后一个值去掉,path缩短为n-1,再进行其他路径测试
代码
class Solution { public: vector<vector<int> > res; vector<int> path; vector<vector<int>> pathSum(TreeNode* root, int sum) { recur(root, sum); return res; } void recur(TreeNode* root, int sum) { // 1. 终止条件 if(root == NULL) return; // 2. 执行内容 path.push_back(root->val); sum -= root->val; if(sum==0 && root->left==NULL && root->right==NULL) { // vector<int> path_temp(path); res.push_back(path); } // 3. 递归 recur(root->left, sum); recur(root->right, sum); //恢复现场 path.pop_back(); } };