美文网首页
28.二叉树中和为某一值的路径

28.二叉树中和为某一值的路径

作者: HamletSunS | 来源:发表于2019-07-31 16:08 被阅读0次

题目:求从根节点到叶子节点的路径权值和为某一个目标值的所有路径
思路:考察递归。
设计:

  • 既然是递归,就由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();
    }
};

相关文章

网友评论

      本文标题:28.二叉树中和为某一值的路径

      本文链接:https://www.haomeiwen.com/subject/kprtdctx.html