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)