Middle
Como evitar o estouro da pilha de chamadas ao percorrer uma árvore? Como implementar uma travessia iterativa usando uma pilha em JavaScript?
sobes.tech IA
Resposta da IA
Para evitar o estouro da pilha de chamadas ao percorrer uma árvore, em vez de uma abordagem recursiva, utiliza-se uma travessia iterativa com uma pilha explícita.
Exemplo de travessia iterativa em JavaScript (busca em profundidade):
function iterativeDFS(root) {
const stack = [root];
while (stack.length > 0) {
const node = stack.pop();
console.log(node.value); // processamento do nó
// Adiciona os filhos à pilha (por exemplo, da direita para a esquerda, para percorrer primeiro a esquerda)
for (let i = node.children.length - 1; i >= 0; i--) {
stack.push(node.children[i]);
}
}
}
Este método permite controlar a profundidade da pilha manualmente e evitar o estouro que pode ocorrer com recursão profunda.