面试题34:二叉树中和为某一值的路径
文章目录
题目
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
考点
前序遍历
LeetCode版本
class Solution {
public:
void findPath(vector<vector<int>> &res, vector<int> & path, TreeNode *root, int &curSum,int target){
if(root == nullptr) return;
curSum += root->val;
path.push_back(root->val);
if(curSum == target && root->left== nullptr && root->right == nullptr)res.push_back(path);
findPath(res,path,root->left,curSum,target);
findPath(res,path,root->right,curSum,target);
curSum -= root->val;
path.pop_back();
}
vector<vector<int>> pathSum(TreeNode* root, int target) {
vector<vector<int>> res;
if(root == nullptr) return res;
vector<int> path;
int curSum = 0;
findPath(res,path,root,curSum,target);
return res;
}
};