Middle
Daraxtni aylanib chiqishda chaqiriqlar stekini to'ldirishdan qanday qochish mumkin? JavaScriptda stek yordamida iterativ o'tishni qanday amalga oshirish mumkin?
sobes.tech AI
AIdan javob
Чтобы избежать переполнения 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]);
}
}
}
Такой подход позволяет контролировать глубину стека самостоятельно и избежать переполнения, которое может возникнуть при глубокой рекурсии.