1var smallestMissingValueSubtree = function (parents, nums) {2let n = parents.length,3next = [...Array(n)].map((d) => []),4used = {};5for (let i = 1; i < n; i++) next[parents[i]].push(i);6let dfs = (node) => {7if (used[nums[node]]) return;8used[nums[node]] = true;9for (let child of next[node]) dfs(child);10};11let cur = nums.indexOf(1),12leftAt = 1,13res = [...Array(n)].map((d) => 1);14while (cur !== -1) {15dfs(cur);16while (used[leftAt]) leftAt++;17res[cur] = leftAt;18cur = parents[cur];19}20return res;21};