题目:求从根节点到叶子节点的路径权值和为某一个目标值的所有路径
思路:考察递归。
设计:
- 既然是递归,就由2部分构成,1是退出条件,2是递归过程
- 退出条件自然是当前节点是叶子节点,本题用递归是为了搜索路径,通过画图可以帮助我们思考要设计哪些参数。
- 最后要求输出集合按照路径长度从大到小排列,我没有做这方面的处理,可以写个排序函数排下序即可
class Solution {
public:
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
temp.clear();
if(root==nullptr)
return temp;
vector<int> cach;
getPath(root,expectNumber,cach);
return temp;
};
private:
vector<vector<int>> temp;
void getPath(TreeNode* root,int target,vector<int> &cach){
if(root->left==nullptr && root->right==nullptr){
if(root->val==target){
cach.push_back(root->val);
temp.push_back(cach);
cach.pop_back();
}
return ;
}
cach.push_back(root->val);
if(root->left!=nullptr){
getPath(root->left,target-root->val,cach);
}
if(root->right!=nullptr)
getPath(root->right,target-root->val,cach);
cach.pop_back();
}
};
网友评论