Middle
27
Ағашты обход кезінде шақыру стекінің толып кетуін қалай болдырмауға болады? JavaScript-те стек арқылы итеративті обходты қалай жүзеге асыруға болады?
Сұралған компаниялар
UserGate
AI-дан жауап
sobes.tech 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]);
}
}
}
Такой подход позволяет контролировать глубину стека самостоятельно и избежать переполнения, которое может возникнуть при глубокой рекурсии.