Use a dictionary to store the sum of path up to and including the element value. Any subsequent child can then add its own value to its parent value and put it in the dict. And if this element is a leaf (checked from the dictionary) then we can add its value to the resulting sum. Dictionary keys are chosen to be of the form num[i]/10 because they are guaranteed to be unique for the tree.

```
class Solution(object):
def pathSum(self, nums):
summ=0
a = {x/10: 0 for x in nums} #dictionary
for i in xrange(len(nums)):
height,pos,value = nums[i]/100, (nums[i]/10)%10, nums[i]%10
parent = (height-1)*10 + (pos+1)/2
value += a.get(parent,0)
leftchild = (height+1)*10 + (2*pos-1)
rightchild = leftchild + 1
if leftchild not in a and rightchild not in a:
summ+=value
else:
a[nums[i]/10]=value
return summ
```