Middle
Как да избегнем преливане на стек при обход на дърво? Как да реализираме итеративен обход чрез стек в JavaScript?
sobes.tech AI
Отговор от AI
За да избегнете препълване на стековете при обхождане на дърво, вместо рекурсивен подход се използва итеративен обход с явен стек.
Пример за итеративен обход в 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]);
}
}
}
Този подход позволява да контролирате дълбочината на стека ръчно и да избегнете препълване, което може да възникне при дълбока рекурсия.