1. 程式人生 > 實用技巧 >二叉樹中和為給定值的路徑(leetcode 113)

二叉樹中和為給定值的路徑(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; } };