Aller au contenu

Arbres et graphes

Terminale · NSI · Structures de données

Structures de données

Les arbres : vocabulaire, arbres binaires, ABR

Listes, piles et files sont des structures linéaires : les éléments se suivent en file indienne. Les arbres introduisent une organisation hiérarchique, où chaque élément peut avoir plusieurs successeurs. Cette forme se retrouve partout : arborescence de fichiers, structure d'une page HTML, arbre de décision, index de base de données.

L'arbre binaire
Un arbre binaire est un arbre dans lequel chaque nœud possède au plus deux enfants, distingués et ordonnés : le sous-arbre gauche et le sous-arbre droit. Cette distinction est essentielle : un nœud n'ayant qu'un enfant gauche est différent d'un nœud n'ayant qu'un enfant droit.

La définition est naturellement récursive : un arbre binaire est soit vide, soit constitué d'une racine et de deux sous-arbres binaires. C'est cette récursivité qui rend les algorithmes sur les arbres si courts à écrire.

GrandeurDéfinitionExemple : racine A, enfants B et C, B ayant lui-même D et E
Taillenombre de nœuds5 (A, B, C, D, E)
Nombre de feuillesnœuds sans enfant3 (D, E et C)
Hauteurprofondeur maximale2 (chemin A → B → D)
Nombre d'arêtestoujours taille − 14
Profondeur de Cdistance à la racine1

Structures de données

Les graphes : modélisation et représentations

Un graphe est la structure la plus générale du programme : elle sert à modéliser des relations entre objets. Réseau routier, réseau social, plan de métro, dépendances entre tâches, Web… dès qu'on peut dire « ceci est relié à cela », on a un graphe.

  • Un CHEMIN est une suite de sommets consécutivement reliés.
  • Un CYCLE est un chemin qui revient à son point de départ sans réutiliser deux fois la même arête.
  • Un graphe est CONNEXE si, entre deux sommets quelconques, il existe toujours un chemin : il est d'un seul tenant.
  • Un graphe non orienté est COMPLET si toutes les paires de sommets sont reliées.
  • Un ARBRE est exactement un graphe non orienté connexe et sans cycle : c'est le lien entre les deux moitiés du chapitre.

Deux façons de représenter un graphe en machine
Numérotons les sommets de 0 à n − 1.

1. La matrice d'adjacence : un tableau à deux dimensions M de taille n × n, où M[i][j] vaut 1 s'il existe un lien de i vers j, et 0 sinon. Pour un graphe non orienté, la matrice est symétrique : M[i][j] = M[j][i]. Pour un graphe pondéré, on y range le poids au lieu de 1.

2. Les listes d'adjacence : à chaque sommet on associe la liste de ses voisins. En Python, on utilise très naturellement un dictionnaire dont les clés sont les sommets et les valeurs les listes de voisins.

CritèreMatrice d'adjacenceListes d'adjacence
Mémoire occupéen² cases, quel que soit le nombre d'arêtesproportionnelle au nombre de liens
Tester si l'arête (u, v) existeO(1) : une simple lecture M[u][v]O(degré de u) : il faut parcourir la liste des voisins
Parcourir tous les voisins de uO(n) : il faut lire toute la ligne uO(degré de u) : optimal
Ajouter une arêteO(1)O(1)
Graphe dense (beaucoup d'arêtes)bien adaptéesans avantage particulier
Graphe creux (peu d'arêtes)très gourmande en mémoirenettement préférable

Combien d'arêtes au maximum ?

Dans un graphe simple non orienté (ni boucle, ni arête double) à n sommets, chaque paire de sommets peut être reliée au plus une fois. Le nombre maximal d'arêtes est donc le nombre de paires : n(n − 1)/2.

Pour n = 5 : 5 × 4 / 2 = 10 arêtes. Pour n = 10 : 10 × 9 / 2 = 45 arêtes. Un tel graphe, où toutes les paires sont reliées, est dit complet. Pour un graphe orienté sans boucle, chaque paire admet deux arcs possibles : le maximum devient n(n − 1).

Exercices corrigés

  1. Dans un arbre, qu'est-ce que la racine ?

    • A.Le nœud le plus profond de l'arbre
    • B.N'importe quel nœud sans enfant
    • C.L'unique nœud qui n'a pas de parentBonne réponse
    • D.Le nœud portant la plus petite valeur

    Réponse : C — L'unique nœud qui n'a pas de parent

    La racine est le point d'entrée de l'arbre : c'est le seul nœud dont aucun autre n'est le parent. Un nœud sans enfant, c'est une feuille — l'exact opposé, et la confusion la plus fréquente au début du chapitre. Le nœud le plus profond est justement le plus éloigné de la racine, et la valeur portée n'entre pas dans la définition (sauf propriété supplémentaire, comme dans un tas).

  2. Que produit le parcours infixe d'un arbre binaire de recherche ?

    • A.Les clés dans l'ordre croissantBonne réponse
    • B.Les clés dans leur ordre d'insertion
    • C.Les feuilles d'abord, puis les nœuds internes
    • D.Les clés dans l'ordre décroissant

    Réponse : A — Les clés dans l'ordre croissant

    Le parcours infixe visite le sous-arbre gauche, puis la racine, puis le sous-arbre droit. Comme dans un ABR tout le sous-arbre gauche est plus petit que la racine et tout le sous-arbre droit plus grand, la suite obtenue est nécessairement croissante. C'est d'ailleurs un excellent test : si le parcours infixe n'est pas trié, l'arbre n'est PAS un ABR. Pour l'obtenir décroissant, il suffirait d'inverser l'ordre en visitant la droite d'abord.

  3. Quel est le coût de l'insertion d'une clé dans un arbre binaire de recherche de hauteur h ?

    • A.O(1), comme un accès direct par indice dans un tableau
    • B.O(n) dans tous les cas, même si l'arbre est équilibré
    • C.O(log n) dans tous les cas, même pour un arbre dégénéré
    • D.O(h) : on descend d'un niveau à chaque comparaisonBonne réponse

    Réponse : D — O(h) : on descend d'un niveau à chaque comparaison

    L'insertion consiste à descendre depuis la racine en comparant la clé à chaque nœud rencontré, jusqu'à trouver un emplacement libre. On effectue donc au plus une comparaison par NIVEAU, d'où un coût en O(h). C'est la formulation exacte à connaître. Le O(log n) n'est vrai que si l'arbre est équilibré, et le O(n) seulement dans le pire cas du peigne : les deux sont des cas particuliers de O(h).

  4. Combien d'arêtes au maximum peut contenir un graphe simple non orienté à 5 sommets ?

    • A.10Bonne réponse
    • B.20
    • C.25
    • D.15

    Réponse : A — 10

    Dans un graphe simple, chaque PAIRE de sommets distincts peut porter au plus une arête. Le maximum est donc le nombre de paires : n(n − 1)/2 = 5 × 4 / 2 = 10. Vérification directe : le sommet 0 se relie à 4 autres, le sommet 1 à 3 nouveaux, puis 2, puis 1, soit 4 + 3 + 2 + 1 = 10. Répondre 20 revient à oublier de diviser par 2, ce qui compterait chaque arête deux fois ; répondre 25 utiliserait n², qui inclut à tort les boucles et les doublons.

  5. Soit l'arbre binaire : racine A ; enfant gauche B, dont les enfants sont D à gauche et E à droite ; enfant droit C, sans enfant. Quel est le parcours PRÉFIXE ?

    • A.D, B, E, A, C
    • B.D, E, B, C, A
    • C.A, B, D, E, CBonne réponse
    • D.A, B, C, D, E

    Réponse : C — A, B, D, E, C

    Le parcours préfixe traite la racine AVANT ses sous-arbres : racine, gauche, droite. On écrit donc A, puis on parcourt entièrement le sous-arbre de B (B, puis D, puis E), puis celui de C (C seul). Résultat : A, B, D, E, C. L'option 1 est le parcours infixe (gauche, racine, droite), l'option 2 le parcours suffixe (gauche, droite, racine), et l'option 4 le parcours en LARGEUR, qui traite les nœuds niveau par niveau. Retiens le repère : le préfixe commence toujours par la racine, le suffixe finit toujours par elle.

  6. Qu'appelle-t-on une feuille dans un arbre ?

    • A.Un nœud sans enfantBonne réponse
    • B.Le nœud de départ du parcours
    • C.Un nœud ayant exactement deux enfants
    • D.La racine de l'arbre

    Réponse : A — Un nœud sans enfant

    Une feuille est un nœud qui ne possède aucun enfant : c'est un point terminal de l'arbre, le bout d'une branche. Les autres nœuds sont dits internes. Le nœud de départ d'un parcours, c'est la racine — qui n'est une feuille que dans le cas très particulier d'un arbre réduit à un seul nœud.

  7. Dans un arbre binaire, combien d'enfants un nœud peut-il avoir au maximum ?

    • A.1
    • B.3
    • C.Autant que l'on veut
    • D.2Bonne réponse

    Réponse : D — 2

    C'est le sens même du mot « binaire » : au plus deux enfants par nœud, un à gauche et un à droite. Attention à la nuance « au plus » : un nœud peut parfaitement n'avoir qu'un seul enfant, voire aucun (c'est alors une feuille). Et ces deux enfants sont DISTINGUÉS : n'avoir qu'un enfant gauche n'est pas la même chose que n'avoir qu'un enfant droit.

  8. Que désigne la taille d'un arbre ?

    • A.Sa hauteur
    • B.Son nombre de nœudsBonne réponse
    • C.Son nombre de feuilles
    • D.La longueur de sa plus longue branche

    Réponse : B — Son nombre de nœuds

    La taille, c'est le nombre total de nœuds de l'arbre — racine comprise, feuilles comprises. La hauteur est une notion différente : c'est la profondeur maximale, autrement dit la longueur de la plus longue branche (options 1 et 4, qui disent la même chose). Deux arbres de même taille peuvent avoir des hauteurs très différentes : c'est exactement ce qui oppose un arbre équilibré et un peigne.

  9. Dans un graphe non orienté, que représente une arête ?

    • A.Une relation entre deux sommets, valable dans les deux sensBonne réponse
    • B.Une relation d'un sommet vers lui-même uniquement
    • C.Une relation entre trois sommets
    • D.Une relation entre un sommet et une autre arête

    Réponse : A — Une relation entre deux sommets, valable dans les deux sens

    Une arête relie deux sommets par une relation SYMÉTRIQUE : si u est relié à v, alors v est relié à u. C'est la différence avec le graphe orienté, où l'arc a un sens et où u vers v n'implique pas v vers u. Une relation d'un sommet vers lui-même s'appelle une boucle, et n'existe pas dans les graphes simples ; quant aux arêtes, elles relient des sommets, jamais d'autres arêtes.

  10. Dans un graphe non orienté, qu'est-ce que le degré d'un sommet ?

    • A.Le nombre total de sommets du graphe
    • B.Sa distance à la racine
    • C.Le nombre d'arêtes qui lui sont incidentes, donc son nombre de voisinsBonne réponse
    • D.Le nombre de chemins qui passent par ce sommet

    Réponse : C — Le nombre d'arêtes qui lui sont incidentes, donc son nombre de voisins

    Le degré compte les arêtes qui touchent le sommet, c'est-à-dire ses voisins directs. Si le sommet 0 est relié à 1 et à 2, son degré vaut 2. La notion de racine n'existe pas dans un graphe quelconque (elle est propre aux arbres), et le nombre de chemins passant par un sommet est une tout autre grandeur, généralement bien plus grande que le degré.

  11. Avec la convention « hauteur = nombre d'arêtes du plus long chemin partant de la racine », quelle est la hauteur d'un arbre réduit à sa seule racine ?

    • A.−1
    • B.0Bonne réponse
    • C.1
    • D.2

    Réponse : B — 0

    S'il n'y a qu'un seul nœud, il n'y a aucune arête à parcourir : le plus long chemin depuis la racine a une longueur de 0. La hauteur vaut donc 0. La valeur −1 est réservée à l'arbre VIDE, ce qui rend la formule cohérente : ajouter une racine au-dessus d'un arbre vide fait bien passer la hauteur de −1 à 0. Attention en devoir : certains manuels comptent les nœuds plutôt que les arêtes et trouvent alors 1. Lis toujours la convention de l'énoncé.

  12. Quelle propriété caractérise un arbre binaire de recherche (ABR) ?

    • A.Les feuilles sont rangées par ordre croissant de gauche à droite
    • B.Tous les nœuds ont exactement deux enfants
    • C.La racine porte forcément la plus petite clé
    • D.Pour tout nœud, les clés du sous-arbre gauche lui sont inférieures et celles du sous-arbre droit lui sont supérieuresBonne réponse

    Réponse : D — Pour tout nœud, les clés du sous-arbre gauche lui sont inférieures et celles du sous-arbre droit lui sont supérieures

    La propriété d'ABR est locale mais doit être vérifiée en TOUT nœud, pas seulement à la racine : c'est une définition récursive. Comparer uniquement un nœud à ses deux enfants directs ne suffit pas — c'est l'erreur classique. Un ABR n'impose rien sur le nombre d'enfants, et sa racine n'est ni le minimum ni le maximum : le minimum est le nœud le plus à gauche, le maximum le plus à droite.

S'entraîner sur ce chapitre

Ce chapitre compte 37 exercices corrigés dans l'application, avec le suivi de ta progression.

Commencer les exercices