1# Runtime: 3421 ms (Top 39.22%) | Memory: 51.8 MB (Top 96.08%)2class Solution:3def smallestMissingValueSubtree(4self, parents: List[int], nums: List[int]5) -> List[int]:6ans = [1] * len(parents)7if 1 in nums:8tree = {}9for i, x in enumerate(parents):10tree.setdefault(x, []).append(i)1112k = nums.index(1)13val = 114seen = set()1516while k != -1:17stack = [k]18while stack:19x = stack.pop()20seen.add(nums[x])21for xx in tree.get(x, []):22if nums[xx] not in seen:23stack.append(xx)24seen.add(nums[xx])25while val in seen:26val += 127ans[k] = val28k = parents[k]29return ans