Salut! As vrea sa inteleg: cum face algoritmul DFS de se intoarce la nodul-parinte cand a ajuns la un nod de la care nu se mai poate vizita altceva? E vorba de faptul ca e o functie recursiva care foloseste stiva ca memorie si cand ajunge la un nod de la care nu mai poate vizita nimic, il sterge din stiva si se intoarce la cel precedent? As vrea numai o explicatie.

Răspuns :

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