2
public int[] smallestMissingValueSubtree(int[] parents, int[] nums) {3
int n = parents.length;4
int[] res = new int[n];5
for (int i = 0; i < n; i++) {10
for (int i = 0; i < n; i++) {22
Map<Integer, Set<Integer>> graph = new HashMap<>();23
for (int i = 1; i < n; i++) {24
Set<Integer> children = graph.getOrDefault(parents[i], new HashSet<Integer>());26
graph.put(parents[i], children);29
Set<Integer> visited = new HashSet<Integer>();31
int parentIter = oneIndex;33
while (parentIter >= 0) {34
dfs(parentIter, graph, visited, nums);35
while (visited.contains(miss)) {38
res[parentIter] = miss;39
parentIter = parents[parentIter];44
public void dfs(int ind, Map<Integer, Set<Integer>> graph, Set<Integer> visited, int[] nums) {45
if (!visited.contains(nums[ind])) {46
Set<Integer> children = graph.getOrDefault(ind, new HashSet<Integer>());48
for (int p : children) {49
dfs(p, graph, visited, nums);51
visited.add(nums[ind]);