function pruferDecoding(pruferSequence) {
const n = pruferSequence.length + 2;
const reference = new Array(n).fill(0);
for (const v of pruferSequence) {
++reference[v];
}
const unbounded = v => reference[v] === 0;
pruferSequence.push(n - 1);
const pruferIterator = pruferSequence.values();
const adjacencyList = Array.from({length: n}, () => []);
for (const v of Generators.range(n)) {
for (let u = v; unbounded(u) && u <= v;) {
const w = pruferIterator.next().value;
--reference[w];
adjacencyList[u].push(w);
adjacencyList[w].push(u);
u = w;
}
}
return adjacencyList;
}