class Solution:
def pathSum(self, nums: List[int]) -> int:
d = {}
for x in nums:
key = x // 10 # level_pos
val = x % 10
d[key] = val
def dfs(lp,psum,d):
if d.get(lp) == None: return 0 # can't use not d.get(lp), since hashmap can have value == 0, and not d.get(key) in this case applies
val = d.get(lp)
level = lp//10
pos = lp % 10
left_lp = 10 * (level + 1) + pos * 2 - 1
right_lp = 10 * (level + 1) + pos * 2
curSum = psum + val
if d.get(left_lp) == None and d.get(right_lp)== None: # can't use not d.get(lp)
return curSum
return dfs(left_lp,curSum,d) + dfs(right_lp,curSum,d)
p = nums[0]//10
return dfs(p,0,d)