【题目描述】
如果树的深度小于5,则该树可以由三位整数的列表表示。
对于此列表中的每个整数:
百位数表示该节点的深度D,1 <= D <= 4。
2.十位数表示该节点在其所属级别中的位置P,1 <= P <= 8.该位置与完整二叉树中的位置相同。
3.单位数字表示该节点的值V,0 <= V <= 9。
给定一个表示深度小于5的二叉树的升序三位整数列表,您需要返回从根到叶子的所有路径和的总和。
【题目样例 】
例 1:
输入: [113, 215, 221]
输出: 12
解释:
该树如下图所示:
3
/
5 1
所有的路径和为 (3 + 5) + (3 + 1) = 12.
例 2:
输入: [113, 221]
输出: 4
解释:
该树如下所示:
3
1
所有的路径和为 (3 + 1) = 4.
class Solution:
def pathSumIV(self,nums):
if len(nums) == 1:
return nums[0]%10
a = [-1 for _ in range(100)]
for i in nums:
a[i/10]=i%10
ret=0
for i in range(2,5):
for j in range(1,9):
idx=i*10+j
pre=(i-1)*10+(j+1)/2
next1=(i+1)*10+2*j
next2=(i+1)*10+2*j-1
if a[idx]!=-1 and a[pre]!=-1:
a[idx]=a[idx]+a[pre]
if a[next1]==-1 and a[next2]==-1 and a[idx]!=-1:
ret=ret+a[idx]
return ret