Parcours en profondeur
Exercice · OCaml (option informatique), chapitre 15 — Parcours de graphes
Énoncé
Écrire parcours_profondeur adj depart renvoyant la liste des sommets visités.
Corrigé
let parcours_profondeur adj depart =
let n = Array.length adj in
let vu = Array.make n false in
let ordre = ref [] in
let rec visite s =
if not vu.(s) then begin
vu.(s) <- true;
ordre := s :: !ordre;
List.iter visite adj.(s)
end
in
visite depart;
!ordre
La récursion s'enfonce dans le premier voisin non vu, puis remonte. ordre accumule les sommets dans l'ordre inverse de découverte (chaque nouveau est mis en tête).
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.