DECI!
DFS, sau Depth-first search SAU PARCURGEREA IN ADANCIMEA
cand iti declari stiva aia in subprogram, o ai goala
faci s.push(nodul din care incepi) ca sa bagi nodul radacina de unde parcurgi
apoi cat timp stiva nu e goala, v il scoti din stiva cu s.pop() si te intrebi ca daca v nu e vizitat atunci il consideri vizitar si faci un for de la toate legaturile lui v la alte noduri, adica la fiii lui si faci s.push(fiu) daca acesti copii nu au fost vizitati
asta este explici tu acolo, viziteaza vecinii fiecarui varf in ordinea inversa unul fata de celalalt: primul vecin al lui v vizitat de functia recursiva este primul din lista adiacentelor, adica lista s.
imagineaza-ti ca ai exemplul urmator:
radacina e nodul A, care are copii pe B, C si E, iar B are copii pe D si F, iar C are copil pe G
implementarea recursiva va vizita nodurile din exemplu asa:
A, B, D, F, E, C, G