Sobes.tech
Middle

Ինչպե՞ս խուսափել զանգերի ստեկի գերբեռնվածությունից ծառը շրջելիս: Ինչպե՞ս իրականացնել ինտերատիվ շրջայց ստեկով JavaScript-ում։

sobes.tech AI

Պատասխան AI-ից

Чтобы избежать переполнения call stack при обходе дерева, вместо рекурсивного подхода используют итеративный обход с явным стеком.

Пример итеративного обхода дерева в JavaScript (обход в глубину):

function iterativeDFS(root) {
  const stack = [root];
  while (stack.length > 0) {
    const node = stack.pop();
    console.log(node.value); // обработка узла
    // Добавляем детей в стек (например, справа налево, чтобы слева обойти первым)
    for (let i = node.children.length - 1; i >= 0; i--) {
      stack.push(node.children[i]);
    }
  }
}

Такой подход позволяет контролировать глубину стека самостоятельно и избежать переполнения, которое может возникнуть при глубокой рекурсии.