Faaez Razeen

Path Sum III

  • 1 min read
  • LC-Medium
  • Binary Tree

3 years ago

Solution

TimeSpaceExplanation
O()O()
def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int: prefix_counts = defaultdict(lambda: 0) prefix_counts[0] = 1 ans = 0 def dfs(node, cur_sum): nonlocal ans if node is None: return cur_sum += node.val prefix_sum = cur_sum - targetSum if prefix_sum in prefix_counts: ans += prefix_counts[prefix_sum] prefix_counts[cur_sum] += 1 dfs(node.left, cur_sum) dfs(node.right, cur_sum) prefix_counts[cur_sum] -= 1 cur_sum -= node.val dfs(root, 0) return ans