G = [{m:0, sz:[3]},{m:0, sz:[2, 3, 5]},{m:0, sz:[]},{m:0, sz:[2, 4]},{m:0, sz:[0]},{m:0, sz:[]},{m:0, sz:[0, 4, 5]}] ; GT = [] ; for (p in G) GT[p] = {m:0, sz:[]} ; // üres transzponált gráf for (p in G) for (q of G[p].sz) GT[q].sz.push(parseInt(p)) ; // transzponálás sorrend = [] ; function mb1(p) { G[p].m++ ; for (q of G[p].sz) if (!G[q].m) mb1(q); sorrend.push(parseInt(p)) ; } function mb2(p) { GT[p].m++ ; document.write(p+" ") ; for (q of GT[p].sz) if (!GT[q].m) mb2(q); } for (p in G) if (!G[p].m) mb1(p) ; // 1. mélységi keresés elhagyási sorrend meghatározásához while (sorrend.length) { // az elhagyási sirrendben visszafelé p = sorrend.pop() ; if (!GT[p].m) { document.write(" { ") ; mb2(p) ; // a 2. mélységi keresés (mélységi bejárás hívása a kiíráshoz) document.write(" } ") ; } }