美文网首页
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

    问题: 1.我怎么确保push的是正确的呢?再加一个vector2.什么时候进行push,什么时候进行pop呢?用...

网友评论

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

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