Middle
Hoe voorkom je een call stack overflow bij het doorlopen van een boom? Hoe implementeer je een iteratieve doorloop met een stack in JavaScript?
sobes.tech AI
Antwoord van AI
Om een stack overflow te voorkomen bij het doorlopen van een boom, wordt in plaats van een recursieve aanpak een iteratieve doorloop met een expliciete stack gebruikt.
Voorbeeld van een iteratieve diepte-eerst zoekopdracht in JavaScript:
function iterativeDFS(root) {
const stack = [root];
while (stack.length > 0) {
const node = stack.pop();
console.log(node.value); // verwerking van de knoop
// Voeg de kinderen toe aan de stack (bijvoorbeeld van rechts naar links, zodat links eerst wordt bezocht)
for (let i = node.children.length - 1; i >= 0; i--) {
stack.push(node.children[i]);
}
}
}
Deze aanpak maakt het mogelijk om de diepte van de stack handmatig te controleren en overloop te voorkomen die kan optreden bij diepe recursie.