二叉树中和为给定值的路径(leetcode 113)

一:解题思路

这道题目和 leetcode112 在二叉树中是否存在指定和类似,leetcode112 这个题目是判断存在性,而这个题目是求出符合条件的路径总数量,可以放在一起学习。

Time:O(n),Space:O(n)

二:完整代码示例 (C++版和Java版)

C++:

class Solution 
{
private:
    void path(TreeNode* root, int sum, vector<int>& elem, vector<vector<int>>& result)
    {
        if (root == NULL) return;
        elem.push_back(root->val);
        if (root->left == NULL && root->right == NULL && root->val == sum)
            result.push_back(elem);
        path(root->left,sum-root->val,elem,result);
        path(root->right,sum-root->val,elem,result);
        elem.pop_back();
    }
public:
    vector<vector<int>> pathSum(TreeNode* root, int sum) 
    {
        vector<vector<int>> result;
        vector<int> elem;

        path(root,sum,elem,result);

        return result;
    }
};

 

posted @ 2020-08-17 15:53  repinkply  阅读(195)  评论(0)    收藏  举报