Middle
Hogyan kerülhető el a hívási verem túlcsordulása fa bejárásakor? Hogyan valósítható meg egy iteratív bejárás verem segítségével JavaScriptben?
sobes.tech MI
Válasz az MI-től
A fa szerinti bejárás során a hívási verem túlcsordulásának elkerülése érdekében a rekurzív megközelítés helyett explicit veremmel történő iteratív bejárást alkalmaznak.
Példa az iteratív mélységi keresésre JavaScript-ben:
function iterativeDFS(root) {
const stack = [root];
while (stack.length > 0) {
const node = stack.pop();
console.log(node.value); // csomópont feldolgozása
// Gyerekek hozzáadása a veremhez (pl. jobbról balra, hogy először a bal oldalt járjuk be)
for (let i = node.children.length - 1; i >= 0; i--) {
stack.push(node.children[i]);
}
}
}
Ez a megközelítés lehetővé teszi a verem mélységének manuális ellenőrzését és a mély rekurzióból adódó túlcsordulás elkerülését.