leetcode 面试题 04.12. 求和路径

146 阅读1分钟

c++

class Solution {
public:
    int dfs(TreeNode *root, int sum) {
        if (!root) return 0;
        int val = sum - root->val;
        return (root->val == sum) + dfs(root->left, val) + dfs(root->right, val);
    }
    int pathSum(TreeNode* root, int sum) {
        if (!root) return 0;
        int a = dfs(root, sum);
        return a + pathSum(root->left, sum) + pathSum(root->right, sum); 
    }
};

js

var pathSum = function(root, sum) {
    if (!root) return 0;
    var dfs = function(root, val) {
        if (!root) return 0;
        return (root.val == val) + dfs(root.left, val - root.val) + dfs(root.right, val - root.val);
    }
    return dfs(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);
};