type Graphe == (int * int list) list;; let rec getVoisins g sommet = match g with [] -> failwith "Accès à un sommet non existant" |(s, voisins)::reste -> if s = sommet then voisins else getVoisins reste sommet;; let rec isinListe liste element= mem element liste;; let rec parcours g aetevisite avisiter fAjout fTraitement = match avisiter with [] -> () |sommetCourant::reste -> if (isinListe aetevisite sommetCourant) then parcours g aetevisite reste fAjout fTraitement else begin fTraitement sommetCourant; let voisins = getVoisins g sommetCourant in let resteavisiter = fAjout reste voisins in let cequiaetevisite = sommetCourant::aetevisite in parcours g cequiaetevisite resteavisiter fAjout fTraitement end ;; let enfiler file listelement= file@listelement;; let empiler pile listelement= listelement@pile;; let parcoursProfondeur g sommet fTraitement= parcours g [] [sommet] empiler fTraitement;; let parcoursLargeur g sommet fTraitement = parcours g [] [sommet] enfiler fTraitement;;