Loading
Loading
Cette fiche traite les algorithmes classiques de la terminale NSI sur les structures arborescentes et les graphes : les parcours d'arbres (en profondeur — préfixe, infixe, suffixe — et en largeur), la recherche et l'insertion dans un arbre binaire de recherche, puis les parcours de graphes (DFS avec une pile, BFS avec une file) et leurs applications directes : existence d'un chemin, détection de cycle, test de connexité et plus court chemin pondéré par l'algorithme de Dijkstra. Le fil conducteur est le couple structure de données ↔ stratégie de parcours : une file impose le parcours en largeur, une pile (ou la récursivité) le parcours en profondeur.
5sectionsca. 24min de lecture4compétencesNiveauStandard 4 · Approfondissement 1Vérifié · 06/2026
niveau de base
Maîtriser les trois parcours d'arbre en profondeur (préfixe/infixe/suffixe) et le parcours en largeur, savoir dérouler à la main un BFS (file) et un DFS (pile) en marquant les sommets visités.
niveau approfondi
Écrire en Python les algorithmes (récursif et itératif), justifier le choix file/pile, prouver qu'un parcours infixe d'ABR donne les clés triées, et dérouler Dijkstra avec mise à jour des distances et reconstruction du chemin.
Lesetiefe: Approfondi
Schriftgröße: Standard
Un même arbre lu selon les trois ordres de parcours en profondeur
Parcours préfixe (récursif)
On visite la racine, puis récursivement le sous-arbre gauche g, puis le sous-arbre droit d. Cas de base : l'arbre vide donne la liste vide.
Parcours infixe (récursif)
La racine est visitée entre les deux sous-arbres. Sur un ABR, ce parcours fournit les clés triées en ordre croissant.
Parcours suffixe (récursif)
La racine est visitée en dernier, après ses deux sous-arbres. Utile par exemple pour libérer/supprimer un arbre des feuilles vers la racine.
Parcours en largeur (niveau par niveau) et état de la file
On considère l'arbre binaire de racine A, dont le sous-arbre gauche a pour racine B (de fils gauche D et fils droit E) et dont le sous-arbre droit a pour racine C (de fils gauche F, sans fils droit). Donner l'ordre des nœuds visités pour les parcours préfixe, infixe, suffixe et en largeur.
On visite A, puis on traite tout le sous-arbre gauche (B puis ses fils D, E), puis tout le sous-arbre droit (C puis son fils F).
Dans le sous-arbre gauche : D, puis B, puis E. Ensuite la racine A. Puis le sous-arbre droit : F (fils gauche) puis C.
Sous-arbre gauche d'abord (D, E, puis B), puis sous-arbre droit (F, puis C), enfin la racine A.
Niveau 0 : A. Niveau 1 : B puis C. Niveau 2 : D, E (enfants de B) puis F (enfant de C).
Résultat : Préfixe : A B D E C F. Infixe : D B E A F C. Suffixe : D E B F C A. Largeur : A B C D E F.
Un arbre se parcourt de façon récursive : on traite la racine et l'on rappelle la même fonction sur le sous-arbre gauche puis sur le sous-arbre droit. Tout tient dans la position de la visite de la racine.
Si l'on visite la racine en premier, c'est le parcours préfixe : Racine, Gauche, Droit.
Au milieu, c'est l'infixe ; il a une vertu remarquable sur un arbre binaire de recherche : il restitue les clés triées.
En dernier, c'est le suffixe. Et pour visiter niveau par niveau, on abandonne la récursivité au profit d'une file : c'est le parcours en largeur.
Erreurs fréquentes
Révision active
On considère l'arbre binaire de racine A, dont le sous-arbre gauche a pour racine B (de fils gauche D et fils droit E) et dont le sous-arbre droit a pour racine C (de fils gauche F, sans fils droit). Donner l'ordre des nœuds visités pour les parcours préfixe, infixe, suffixe et en largeur.
Rappel actif
Rappelle-toi les points clés — puis révèle.
Sources : Programme de spécialité NSI — classe terminale (voie générale), BO spécial n° 8 du 25 juillet 2019 (Ministère de l'Éducation nationale) · Programmes et ressources en NSI — voie générale (Éduscol) (Éduscol — Ministère de l'Éducation nationale)
Arbre binaire de recherche : invariant d'ordre et chemin de recherche
Règle de descente dans un ABR
Cette règle gouverne aussi bien la recherche que l'insertion ; à chaque étape on écarte tout un sous-arbre.
Invariant d'ordre de l'ABR
g(n) et d(n) désignent les sous-arbres gauche et droit du nœud n. Cet invariant doit être vrai pour tout nœud de l'arbre.
Coût en fonction de la hauteur h
Le coût d'une recherche est proportionnel à la hauteur h. Équilibré, h vaut environ log₂(n) ; filiforme, h vaut n−1.
On insère successivement dans un ABR initialement vide les valeurs 8, 3, 10, 1, 6, 14, 4, 7, 13. Donner le parcours infixe de l'arbre obtenu et décrire le chemin de comparaisons pour rechercher 7 puis 5.
8 devient la racine. 3 < 8 : fils gauche de 8. 10 > 8 : fils droit de 8.
1 < 8 puis 1 < 3 : fils gauche de 3. 6 < 8 puis 6 > 3 : fils droit de 3. 14 > 8 puis 14 > 10 : fils droit de 10.
4 < 8, 4 > 3, 4 < 6 : fils gauche de 6. 7 < 8, 7 > 3, 7 > 6 : fils droit de 6. 13 > 8, 13 > 10, 13 < 14 : fils gauche de 14.
Le parcours infixe d'un ABR restitue les clés triées. On lit donc l'arbre de la plus petite à la plus grande clé.
Pour 7 : 7 < 8 (gauche), 7 > 3 (droite), 7 > 6 (droite), 7 = 7 : TROUVÉ après le chemin 8, 3, 6, 7. Pour 5 : 5 < 8 (gauche), 5 > 3 (droite), 5 < 6 (gauche), 5 > 4 (droite) ; le sous-arbre droit de 4 est vide : 5 est ABSENT.
Résultat : Parcours infixe : 1 3 4 6 7 8 10 13 14 (clés triées). Recherche de 7 : trouvé par 8→3→6→7. Recherche de 5 : absent (chemin 8→3→6→4, puis sous-arbre vide).
Erreurs fréquentes
Révision active
On insère successivement dans un ABR initialement vide les valeurs 8, 3, 10, 1, 6, 14, 4, 7, 13. Dessiner l'arbre obtenu, donner son parcours infixe, et décrire le chemin de comparaisons effectué pour rechercher la valeur 7 puis la valeur 5.
Rappel actif
Rappelle-toi les points clés — puis révèle.
Sources : Programme de spécialité NSI — classe terminale (voie générale), BO spécial n° 8 du 25 juillet 2019 (Ministère de l'Éducation nationale) · Programmes et ressources en NSI — voie générale (Éduscol) (Éduscol — Ministère de l'Éducation nationale)
Graphe non orienté servant de support aux parcours
Le repère structure ↔ parcours
Repère fondamental du programme : la structure de données choisie détermine la stratégie d'exploration.
Squelette du DFS récursif
Le marquage de u avant la descente garantit qu'on ne repasse jamais par un sommet déjà vu, même en présence de cycles.
Pourquoi une pile donne le DFS et une file le BFS
Soit le graphe non orienté d'arêtes A-B, A-C, B-D, B-E, C-F, E-F (voisins pris dans l'ordre alphabétique). Dérouler un parcours en largeur puis un parcours en profondeur récursif depuis A.
On enfile A et on le marque. File = [A], visités = {A}.
On visite A ; ses voisins B et C ne sont pas marqués : on les enfile et on les marque. File = [B, C], visités = {A, B, C}.
B : voisins non marqués D et E enfilés (file = [C, D, E]). C : voisin non marqué F enfilé (A et E déjà vus). File = [D, E, F].
On défile D, E, F : aucun voisin nouveau. Ordre de visite complet obtenu.
On visite A, on descend chez B (premier voisin), puis chez D (premier voisin non marqué de B). D n'a pas d'autre voisin nouveau : on remonte chez B et l'on descend chez E, puis chez F (voisin de E). Les voisins de F sont C et E : E est déjà marqué, mais C ne l'est pas, donc on visite C. Ordre obtenu : A, B, D, E, F, C.
Résultat : BFS depuis A : A B C D E F (par couches). DFS récursif depuis A : A B D E F C (on descend au plus profond avant de remonter).
Sur un graphe, le danger ce sont les cycles. La toute première règle d'un parcours est donc de marquer chaque sommet visité pour ne jamais y revenir.
Avec une file, on traite les sommets dans leur ordre d'arrivée : on explore d'abord tous les voisins immédiats. C'est le parcours en largeur.
Avec une pile, ou par récursivité, on plonge au plus profond d'une branche avant de remonter. C'est le parcours en profondeur.
Erreurs fréquentes
Révision active
Soit le graphe non orienté dont les arêtes sont A-B, A-C, B-D, B-E, C-F et E-F (les voisins de chaque sommet sont considérés dans l'ordre alphabétique). Dérouler un parcours en largeur puis un parcours en profondeur récursif depuis A, en donnant à chaque étape l'état de la file ou de la pile d'exploration.
Rappel actif
Rappelle-toi les points clés — puis révèle.
Sources : Programme de spécialité NSI — classe terminale (voie générale), BO spécial n° 8 du 25 juillet 2019 (Ministère de l'Éducation nationale) · Programmes et ressources en NSI — voie générale (Éduscol) (Éduscol — Ministère de l'Éducation nationale)
Cycle mis en évidence et graphe non connexe
Existence d'un chemin
Atteints(s) est l'ensemble des sommets marqués par un parcours partant de s. Il suffit de tester l'appartenance de t.
Test de connexité
Un seul parcours suffit : si tous les sommets sont marqués, le graphe est connexe.
Arbre = connexe + (n−1) arêtes
m est le nombre d'arêtes. Un arbre est exactement un graphe connexe à n−1 arêtes (donc sans cycle).
Graphe non orienté de sommets A, B, C, D, E, F et d'arêtes A-B, B-C, C-A, B-D, E-F. Existe-t-il un chemin de A à D ? de A à E ? Le graphe est-il connexe et combien a-t-il de composantes connexes ? Identifier un cycle.
On part de A et l'on marque les sommets atteints : A → B (arête A-B) → C (B-C) et D (B-D) ; depuis C on retrouve A (déjà marqué). Atteints(A) = {A, B, C, D}.
D ∈ Atteints(A) : il existe un chemin de A à D (par exemple A-B-D). E ∉ Atteints(A) : il n'existe AUCUN chemin de A à E.
Atteints(A) compte 4 sommets pour n = 6 : le graphe n'est pas connexe. En relançant un parcours depuis E, on atteint {E, F}. Il y a donc DEUX composantes connexes : {A, B, C, D} et {E, F}.
Lors du DFS, depuis C (atteint par A puis B) on rencontre le voisin A, déjà marqué et différent du parent C... ici le parent de C est B, et A ≠ B : on referme le triangle. Le cycle est A-B-C-A.
Résultat : Chemin A→D : oui (A-B-D). Chemin A→E : non. Graphe non connexe, 2 composantes connexes {A,B,C,D} et {E,F}. Cycle présent : A-B-C-A.
Erreurs fréquentes
Révision active
On considère le graphe non orienté de sommets A, B, C, D, E, F et d'arêtes A-B, B-C, C-A, B-D, E-F. Déterminer s'il existe un chemin de A vers D, puis de A vers E ; dire si le graphe est connexe et combien il a de composantes connexes ; enfin, identifier un cycle et justifier sa présence.
Rappel actif
Rappelle-toi les points clés — puis révèle.
Sources : Programme de spécialité NSI — classe terminale (voie générale), BO spécial n° 8 du 25 juillet 2019 (Ministère de l'Éducation nationale) · Programmes et ressources en NSI — voie générale (Éduscol) (Éduscol — Ministère de l'Éducation nationale)
Graphe pondéré et plus court chemin de A à E (Dijkstra)
Définition du plus court chemin pondéré
On minimise la somme des poids des arêtes le long d'un chemin de s à t (et non leur nombre).
Relâchement d'une arête
Cœur de l'algorithme : on améliore la distance provisoire de v si passer par u est plus court ; on mémorise alors u comme prédécesseur de v.
Dérouler Dijkstra depuis A : distances et mises à jour
Graphe pondéré non orienté d'arêtes A-B (2), A-C (5), B-C (1), B-D (7), C-D (3), C-E (6), D-E (1). Appliquer Dijkstra depuis A : distances minimales vers chaque sommet, puis un plus court chemin de A à E et sa longueur.
dist(A)=0 ; tous les autres à +∞. Aucun sommet n'est encore fixé.
Voisins de A : B (0+2=2) et C (0+5=5). On met à jour dist(B)=2 (préd. A) et dist(C)=5 (préd. A).
Voisins de B : C (2+1=3 < 5 → dist(C)=3, préd. B) et D (2+7=9 → dist(D)=9, préd. B).
Voisins de C : D (3+3=6 < 9 → dist(D)=6, préd. C) et E (3+6=9 → dist(E)=9, préd. C).
Voisin restant E : 6+1=7 < 9 → dist(E)=7, préd. D. Puis on fixe E (dist 7) : terminé.
Prédécesseurs : E←D←C←B←A. On remonte donc E, D, C, B, A puis on inverse.
Résultat : Distances minimales depuis A : A=0, B=2, C=3, D=6, E=7. Plus court chemin de A à E : A-B-C-D-E, de longueur totale 7.
Dans un graphe pondéré, on ne compte plus les arêtes : on additionne leurs poids. Le plus court chemin est celui de somme minimale.
Dijkstra part de la source à distance zéro, tout le reste à l'infini. À chaque tour, il fixe le sommet non traité le plus proche.
Puis il relâche les arêtes de ce sommet : si passer par lui raccourcit un voisin, on met à jour la distance et le prédécesseur.
Quand tous les sommets sont fixés, on remonte les prédécesseurs pour reconstruire le chemin. Ici, A vers E coûte sept.
Erreurs fréquentes
Révision active
Soit le graphe pondéré non orienté de sommets A, B, C, D, E et d'arêtes : A-B (2), A-C (5), B-C (1), B-D (7), C-D (3), C-E (6), D-E (1). Appliquer l'algorithme de Dijkstra depuis A : donner la distance la plus courte de A à chaque sommet, puis un plus court chemin de A à E avec sa longueur totale.
Rappel actif
Rappelle-toi les points clés — puis révèle.
Sources : Programme de spécialité NSI — classe terminale (voie générale), BO spécial n° 8 du 25 juillet 2019 (Ministère de l'Éducation nationale) · Programmes et ressources en NSI — voie générale (Éduscol) (Éduscol — Ministère de l'Éducation nationale)
Références et sources
Ministère de l'Éducation nationale
Éduscol — Ministère de l'Éducation nationale