본문 바로가기
알고리즘/leetcode

437. Path Sum III

by 유이얼 2022. 8. 14.
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int ans;
    
    void f(TreeNode* root, int targetSum, long long prev) {
        if (!root) return;
        long long cur = prev + root->val;
        ans += targetSum == cur;
        
        f(root->left, targetSum, cur);
        f(root->right, targetSum, cur);
    }
    
    int pathSum(TreeNode* root, int targetSum) {
        f(root, targetSum, 0);
        
        if (!root) return 0;
        pathSum(root->left, targetSum);
        pathSum(root->right, targetSum);
        
        return ans;
    }
};

'알고리즘 > leetcode' 카테고리의 다른 글

173. Binary Search Tree Iterator  (0) 2022.08.24
621. Task Scheduler  (0) 2022.08.23
1706. Where Will the Ball Fall  (0) 2022.07.31
234. Palindrome Linked List  (0) 2022.07.30
14. Longest Common Prefix  (0) 2022.07.30