[
tree
dfs
recursion
]
Leetcode 0666 Path Sum IV
Problem statement
https://leetcode.com/problems/path-sum-iv/
Solution
A bit strange in my opinion, but not difficult problem: let us create empty full binary tree with 5
levels, then first fill nodes, traversing nums
. Then use simple dfs to find sum of all paths.
Complexity
Time complexity of all algorithm is O(32)
, because this is number of nodes in our tree.
Code
class Solution:
def pathSumIV(self, nums):
tree = [[-1],[-1]*2,[-1]*4,[-1]*8, [-1]*16]
for num in nums:
dep, pos, val = [int(i) for i in list(str(num))]
tree[dep-1][pos-1] = val
def dfs(d,w,s):
if tree[d+1][2*w] == -1 and tree[d+1][2*w+1] == -1:
self.res += s
for child in [2*w, 2*w+1]:
if tree[d+1][child] != -1:
dfs(d+1, child, s+tree[d+1][child])
self.res = 0
dfs(0,0,tree[0][0])
return self.res