美文网首页
113.path-sum-ii

113.path-sum-ii

作者: Optimization | 来源:发表于2020-05-28 14:47 被阅读0次
    问题:

    1.我怎么确保push的是正确的呢?再加一个vector
    2.什么时候进行push,什么时候进行pop呢?用完只会就pop。
    3.前序后序中序的特点。深度优先遍历是?前序遍历。
    4.你怎么确定你会了呢?
    5.没找到,必须pop掉!!!我也不太理解。

    正文:
    class Solution {
    public:
        vector<vector<int>> pathSum(TreeNode* root, int sum) {
            if(!root) return {};
            vector<vector<int>> ans;
            vector<int> cur;
    
            pathSum(root, sum, cur, ans);
            return ans;
        }
    private:
        void pathSum(TreeNode* root, int sum, vector<int>& cur, vector<vector<int>>& ans){
            if(!root) return;
            if(!root->left && !root->right){
                if(root->val == sum)
                {
                    ans.push_back(cur);
                    //
                    ans.back().push_back(root->val);
                }
                // 不管有没找到就return
                return;            
            }
            // 前序遍历就是深度优先遍历,手写试试
            cur.push_back(root->val);
            int new_sum = sum - root->val;
            pathSum(root->left, new_sum, cur, ans);
            pathSum(root->right, new_sum, cur, ans);
            // 回溯算法 
            cur.pop_back();
        }
    };
    

    相关文章

      网友评论

          本文标题:113.path-sum-ii

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