Advertisement
Byleth_CYY

Untitled

Jul 1st, 2020
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. # Definition for a binary tree node.
  2. # class TreeNode:
  3. # def __init__(self, val=0, left=None, right=None):
  4. # self.val = val
  5. # self.left = left
  6. # self.right = right
  7. class Solution:
  8. def pathSum(self, root: TreeNode, sum: int) -> int:
  9. prefixSum={0:1}
  10. self.pathSum=0
  11. self.counter=0
  12.  
  13. def dfs(node):
  14. if not node:
  15. return
  16.  
  17. self.pathSum+=node.val
  18. prefixSum[self.pathSum]=prefixSum.get(self.pathSum,0)+1
  19. if self.pathSum-sum in prefixSum:
  20. self.counter+=prefixSum[self.pathSum-sum]
  21.  
  22. dfs(node.left)
  23. dfs(node.right)
  24. self.removefromMap(prefixSum,self.pathSum)
  25. self.pathSum-=node.val
  26.  
  27. dfs(root)
  28. return self.counter
  29.  
  30. def removefromMap(self,Map,val):
  31. if val not in Map:
  32. return
  33. if Map[val]==1:
  34. del Map[val]
  35. else:
  36. Map[val]-=1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement