Sobes.tech
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.