Loading
Loading
Cette fiche couvre les deux grandes structures de données NON LINÉAIRES du programme de terminale NSI : les arbres (vocabulaire, taille, hauteur, profondeur ; arbres binaires et structure récursive ; arbres binaires de recherche avec leur propriété d'ordre, l'insertion et la recherche) et les graphes (sommets, arêtes, orientation, pondération, connexité ; représentations par matrice d'adjacence et par listes d'adjacence). Tous ces contenus sont au programme de l'épreuve écrite de spécialité : il s'agit ici de MODÉLISER et de REPRÉSENTER ces structures et d'en maîtriser les propriétés — les algorithmes de PARCOURS sur les arbres et les graphes font l'objet du thème « Algorithmique » dédié.
5sectionsca. 31min de lecture4compétencesNiveauBase 1 · Standard 2 · Approfondissement 2Vérifié · 06/2026
Lesetiefe: Approfondi
Schriftgröße: Standard
Un arbre annoté : racine, nœuds internes, feuilles, profondeurs et hauteur
Taille d'un arbre
On compte tous les nœuds, racine comprise. L'arbre vide a une taille de 0.
Profondeur d'un nœud et hauteur de l'arbre
La profondeur d'un nœud est le nombre d'arêtes qui le séparent de la racine (racine à la profondeur 0). La hauteur est la profondeur maximale, atteinte par la feuille la plus éloignée de la racine.
On considère un arbre dont la racine A a pour fils B et C ; B a pour fils D et E ; C a un seul fils F ; F a un seul fils G. (a) Donner la taille de l'arbre. (b) Lister les feuilles. (c) Donner la profondeur du nœud G. (d) Donner la hauteur de l'arbre (convention : nombre d'arêtes du plus long chemin racine→feuille). (e) Décrire le sous-arbre enraciné en C.
On dénombre tous les nœuds : A, B, C, D, E, F, G.
Une feuille n'a aucun fils. D et E n'ont pas de fils ; G n'a pas de fils. B, C et F ont au moins un fils, donc ne sont pas des feuilles. A est la racine et a des fils.
On compte les arêtes de A jusqu'à G : A→C (1), C→F (2), F→G (3).
La hauteur est la profondeur maximale parmi les feuilles. D et E sont à la profondeur 2, G à la profondeur 3. Le maximum est 3.
Le sous-arbre de racine C est formé de C et de toute sa descendance : C, son fils F, et le fils G de F. C'est un arbre de taille 3 et de hauteur 2.
Résultat : (a) taille = 7. (b) feuilles : D, E, G. (c) profondeur(G) = 3. (d) hauteur = 3. (e) le sous-arbre enraciné en C contient C, F et G (taille 3, hauteur 2). Cet arbre est DÉSÉQUILIBRÉ : la branche A–C–F–G est nettement plus longue que la branche A–B–D.
Erreurs fréquentes
Révision active
On considère un arbre dont la racine A a deux fils B et C ; B a deux fils D et E ; C a un fils F ; F a un fils G. (a) Donner la taille de l'arbre. (b) Lister les feuilles. (c) Donner la profondeur de G. (d) Donner la hauteur de l'arbre (convention : nombre d'arêtes du plus long chemin racine→feuille). (e) Décrire le sous-arbre enraciné en C.
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 numérique et sciences informatiques — voie générale (Éduscol)
Deux arbres binaires de même taille (7 nœuds), de hauteurs opposées
Taille d'un arbre binaire (définition récursive)
Cas de base : l'arbre vide a 0 nœud. Cas récursif : la racine compte pour 1, à quoi s'ajoutent les tailles des sous-arbres gauche g et droit d.
Hauteur d'un arbre binaire (convention « arêtes »)
Cas de base : l'arbre vide a la hauteur conventionnelle −1, de sorte qu'une feuille (deux sous-arbres vides) ait une hauteur 0. Cas récursif : on descend du plus haut des deux sous-arbres.
Encadrement de la hauteur h d'un arbre binaire à n nœuds
Borne inférieure atteinte par l'arbre parfaitement équilibré (le plus « tassé ») ; borne supérieure atteinte par l'arbre filiforme (dégénéré en liste). C'est l'argument central de la complexité de l'ABR.
Croissance de la hauteur d'un arbre binaire à n nœuds : log2 (équilibré) vs linéaire (filiforme)
Un arbre binaire est représenté par None (arbre vide) ou par un triplet (valeur, gauche, droite). (a) Donner une définition récursive de la hauteur avec la convention hauteur(None) = −1. (b) Appliquer cette définition à l'arbre complet à 7 nœuds. (c) Vérifier la cohérence avec l'encadrement log2(n+1) − 1 ≤ h ≤ n − 1.
L'arbre vide est codé par None ; sa hauteur conventionnelle est −1.
Pour un nœud (v, g, d), la hauteur est 1 de plus que la plus grande des hauteurs des deux sous-arbres.
Un arbre complet de 7 nœuds a 3 niveaux : racine (niveau 0), 2 nœuds (niveau 1), 4 feuilles (niveau 2). Les feuilles ont une hauteur 0 ; leurs parents 1 + max(0, 0) = 1 ; la racine 1 + max(1, 1) = 2.
Pour n = 7 : la borne inférieure est log2(7+1) − 1 = log2(8) − 1 = 3 − 1 = 2 ; la borne supérieure est 7 − 1 = 6. La hauteur 2 atteint la borne inférieure : l'arbre est parfaitement équilibré.
Résultat : La hauteur de l'arbre complet de 7 nœuds vaut 2 : c'est exactement la borne inférieure log2(n+1) − 1 de l'encadrement, ce qui confirme que l'arbre est aussi « tassé » que possible. Un arbre filiforme de 7 nœuds atteindrait au contraire la borne supérieure 6.
Un arbre binaire se définit récursivement : il est soit vide, soit un nœud portant une valeur et possédant deux arbres binaires, un sous-arbre gauche et un sous-arbre droit.
Cette définition se traduit directement en fonctions récursives. Pour la taille : zéro pour l'arbre vide, sinon un, plus la taille des deux sous-arbres.
Pour la hauteur, on descend du plus haut des deux sous-arbres en ajoutant un, l'arbre vide valant moins un par convention.
À nombre de nœuds fixé, la hauteur dépend de la forme : minimale et logarithmique pour un arbre équilibré, maximale et linéaire pour un arbre filiforme.
Erreurs fréquentes
Révision active
Écrire en Python une fonction récursive hauteur(a) qui renvoie la hauteur d'un arbre binaire, l'arbre vide étant représenté par None et un nœud non vide par un triplet (valeur, gauche, droite). On adoptera la convention hauteur(None) = −1. Tester la fonction sur un arbre complet de 7 nœuds (vérifier qu'elle renvoie 2) et sur un arbre filiforme de 4 nœuds (vérifier qu'elle renvoie 3).
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)
Arbre binaire de recherche : propriété d'ordre et recherche de la clé 7
Propriété d'ordre d'un ABR (vraie en tout nœud x)
À chaque nœud x, toute clé de son sous-arbre gauche est inférieure à la clé de x, et toute clé de son sous-arbre droit lui est supérieure. La propriété est récursive : elle doit tenir en CHAQUE nœud.
Complexité de la recherche dans un ABR
Le coût est proportionnel à la hauteur h car on parcourt une seule branche. Équilibré, h ≈ log2(n) ; dégénéré, h ≈ n. L'efficacité de l'ABR repose donc sur son équilibre.
On insère dans un ABR initialement vide, et dans cet ordre, les clés : 8, 3, 10, 1, 6, 14, 4, 7, 13. (a) Décrire la construction et la structure obtenue. (b) Donner le parcours infixe et vérifier qu'il est trié. (c) Dérouler la recherche de la clé 7. (d) Indiquer le point d'insertion de la clé 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.
On lit l'arbre dans l'ordre infixe à partir de la racine 8 : sous-arbre gauche trié, puis 8, puis sous-arbre droit trié.
On compare 7 successivement : 7 < 8 → gauche (vers 3) ; 7 > 3 → droite (vers 6) ; 7 > 6 → droite (vers 7) ; égalité → trouvé. Trois comparaisons descendantes.
On cherche 5 : 5 < 8 → gauche (3) ; 5 > 3 → droite (6) ; 5 < 6 → gauche (4) ; 5 > 4 → droite de 4, qui est vide. 5 devient le fils droit de 4.
Résultat : (a) L'ABR a pour racine 8, sous-arbre gauche {3 → (1, 6 → (4, 7))} et sous-arbre droit {10 → (·, 14 → (13, ·))}. (b) Parcours infixe : 1, 3, 4, 6, 7, 8, 10, 13, 14 — strictement croissant, donc l'arbre est bien un ABR. (c) La recherche de 7 emprunte le chemin 8 → 3 → 6 → 7 en trois comparaisons. (d) La clé 5 s'insérerait comme fils droit de 4.
Erreurs fréquentes
Révision active
On insère successivement, dans cet ordre, les clés 8, 3, 10, 1, 6, 14, 4, 7, 13 dans un ABR initialement vide. (a) Dessiner l'ABR obtenu. (b) Donner son parcours infixe et vérifier qu'il est trié. (c) Décrire la recherche de la clé 7 : suite des comparaisons et chemin. (d) Indiquer où serait insérée la clé 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 numérique et sciences informatiques — voie générale (Éduscol)
Graphe non orienté, graphe orienté et graphe pondéré : le vocabulaire
Quatre villes A, B, C, D sont reliées par des routes à double sens : A–B, A–C, B–C et C–D. (a) Modéliser par un graphe non orienté et donner le degré de chaque sommet. (b) Le graphe est-il connexe ? (c) Existe-t-il un cycle ? (d) Si l'on ajoute à chaque route sa longueur en kilomètres, de quel type de graphe s'agit-il ?
On prend pour sommets les villes et pour arêtes les routes. Comme les routes sont à double sens, le graphe est NON ORIENTÉ. Les arêtes sont : {A,B}, {A,C}, {B,C}, {C,D}.
Le degré d'un sommet est son nombre de voisins. A est relié à B et C (degré 2) ; B à A et C (degré 2) ; C à A, B et D (degré 3) ; D à C seulement (degré 1).
Depuis n'importe quel sommet on atteint tous les autres : par exemple D→C→A→B. Il existe donc un chemin entre toute paire de sommets : le graphe est CONNEXE (une seule composante connexe).
Le triangle A–B–C forme un cycle : on part de A, on passe par B puis C et on revient en A sans réutiliser d'arête.
Si chaque arête porte une longueur (un nombre), le graphe devient PONDÉRÉ : c'est le modèle adapté pour calculer ensuite des plus courts chemins.
Résultat : (a) Degrés : A = 2, B = 2, C = 3, D = 1. (b) Le graphe est connexe. (c) Oui, le triangle A–B–C est un cycle. (d) Avec les distances, c'est un graphe non orienté PONDÉRÉ. Remarque : la somme des degrés vaut 2 + 2 + 3 + 1 = 8 = 2 × 4, soit deux fois le nombre d'arêtes — chaque arête comptant pour 1 à chacune de ses deux extrémités.
Erreurs fréquentes
Révision active
Quatre villes A, B, C, D sont reliées par des routes : A–B, A–C, B–C, C–D (toutes à double sens). (a) Modéliser la situation par un graphe non orienté et donner le degré de chaque sommet. (b) Le graphe est-il connexe ? (c) Citer un cycle s'il en existe un. (d) Si chaque route porte une distance en kilomètres, de quel type de graphe parle-t-on ?
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)
Le graphe à représenter (non orienté, sommets 0 à 3)
Matrice d'adjacence (graphe non pondéré)
Tableau n × n indexé par les sommets. Pour un graphe pondéré, on remplace le 1 par le poids de l'arête. Non orienté ⇒ matrice symétrique : M[i][j] = M[j][i].
Coûts comparés des deux représentations (n sommets, m arêtes)
La matrice est gourmande en mémoire (O(n²)) mais teste une arête en O(1) ; les listes sont économes (O(n+m)) — idéales pour les graphes creux — mais le test d'arête y coûte O(degré du sommet).
Matrice d'adjacence du même graphe (symétrique)
Soit le graphe non orienté de sommets 0, 1, 2, 3 et d'arêtes {0,1}, {0,2}, {1,2}, {2,3}. (a) Écrire sa matrice d'adjacence (ordre 0,1,2,3) et vérifier qu'elle est symétrique. (b) Donner les listes d'adjacence. (c) Comparer le coût mémoire des deux représentations et choisir celle adaptée à un très grand réseau creux.
Pour chaque sommet i, on met 1 en colonne j pour chaque voisin j. Sommet 0 : voisins 1 et 2. Sommet 1 : voisins 0 et 2. Sommet 2 : voisins 0, 1, 3. Sommet 3 : voisin 2. La diagonale est nulle (pas de boucle).
Le graphe étant non orienté, on contrôle que M[i][j] = M[j][i] pour tout couple. Ici M[0][2] = M[2][0] = 1, M[2][3] = M[3][2] = 1, etc. : la matrice est bien symétrique par rapport à sa diagonale.
À chaque sommet on associe la liste de ses voisins, lue directement sur le graphe (ou sur les 1 de sa ligne dans la matrice).
Avec n = 4 sommets, la matrice occupe n² = 16 cases, quel que soit le nombre d'arêtes. Les listes occupent de l'ordre de n + m emplacements ; avec m = 4 arêtes (comptées deux fois en non orienté, soit 8 entrées de voisins), cela reste de l'ordre de O(n + m). Pour ce petit graphe, l'écart est faible ; mais pour un grand réseau CREUX (n grand, m petit devant n²), la matrice gaspillerait O(n²) cases presque toutes nulles.
Résultat : (a) La matrice, symétrique, vaut [[0,1,1,0],[1,0,1,0],[1,1,0,1],[0,0,1,0]]. (b) Listes : 0:[1,2], 1:[0,2], 2:[0,1,3], 3:[2]. (c) La matrice coûte toujours O(n²) en mémoire et teste une arête en O(1) ; les listes coûtent O(n+m) et énumèrent les voisins immédiatement. Pour un très grand réseau CREUX, les LISTES d'adjacence sont nettement préférables ; la matrice ne se justifie que pour un graphe dense ou quand le test d'arête en O(1) est critique.
Erreurs fréquentes
Révision active
On considère le graphe non orienté de sommets numérotés 0, 1, 2, 3 et d'arêtes {0,1}, {0,2}, {1,2}, {2,3}. (a) Écrire sa matrice d'adjacence (ordre 0,1,2,3) et vérifier qu'elle est symétrique. (b) Donner les listes d'adjacence correspondantes. (c) Le graphe comptant 4 sommets et 4 arêtes, comparer le coût mémoire des deux représentations et indiquer laquelle conviendrait le mieux à un très grand réseau creux.
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 numérique et sciences informatiques — voie générale (Éduscol)
Références et sources