NSI Terminale — programme officiel

Arbres binaires et arbres binaires de recherche : fiche de révision

Vocabulaire des arbres, taille et hauteur, parcours préfixe, infixe, suffixe et en largeur, arbres binaires de recherche : recherche et insertion en O(h), avec le code récursif exact.

Génère ta fiche depuis TON coursFiches, flashcards et QCM générés par IA — gratuit

1Vocabulaire et propriétés

Un arbre binaire est soit vide, soit constitué d'un nœud (la racine) portant une étiquette et de deux sous-arbres binaires, le sous-arbre gauche et le sous-arbre droit. Un nœud sans enfant est une feuille. La taille est le nombre de nœuds ; la hauteur est le nombre de nœuds sur le plus long chemin de la racine à une feuille (convention du programme : un arbre vide a une hauteur 0, un arbre réduit à sa racine une hauteur 1 — vérifie toujours la convention de l'énoncé).

Encadrement fondamental : pour un arbre de taille n et de hauteur h, on a h ≤ n ≤ 2^h − 1. Un arbre filiforme (chaque nœud a un seul enfant) a h = n ; un arbre complet (tous les niveaux remplis) a n = 2^h − 1, donc h ≈ log₂(n). C'est cette hauteur logarithmique qui rend les arbres efficaces.

Implémentation en Python par une classe Noeud avec les attributs valeur, gauche et droit (None pour un sous-arbre vide), ou par des tuples imbriqués. Les fonctions sur les arbres sont naturellement récursives, le cas de base étant l'arbre vide.

2Calculs récursifs : taille, hauteur, parcours

def taille(a): return 0 if a is None else 1 + taille(a.gauche) + taille(a.droit)

def hauteur(a): return 0 if a is None else 1 + max(hauteur(a.gauche), hauteur(a.droit))

Les trois parcours en profondeur diffèrent par la position du traitement de la racine par rapport aux sous-arbres : préfixe (racine, gauche, droite), infixe (gauche, racine, droite), suffixe (gauche, droite, racine). Exemple avec la racine 8, fils gauche 3 (lui-même avec fils 1 et 6) et fils droit 10 : préfixe 8 3 1 6 10 ; infixe 1 3 6 8 10 ; suffixe 1 6 3 10 8.

def infixe(a):

if a is not None: infixe(a.gauche) ; print(a.valeur) ; infixe(a.droit)

Le parcours en largeur visite les nœuds niveau par niveau (8, puis 3 et 10, puis 1 et 6) et utilise une file : on enfile la racine, puis tant que la file n'est pas vide on défile un nœud, on le traite et on enfile ses enfants non vides. Chaque parcours visite chaque nœud une fois : complexité O(n).

3Arbres binaires de recherche (ABR)

Un arbre binaire de recherche est un arbre binaire étiqueté par des valeurs comparables tel que, pour tout nœud, toutes les valeurs du sous-arbre gauche sont inférieures (ou égales, selon la convention) à la valeur du nœud, et toutes celles du sous-arbre droit lui sont supérieures. Propriété clé : le parcours infixe d'un ABR donne les valeurs dans l'ordre croissant.

Recherche : on compare à la racine ; si égal, trouvé ; si plus petit, on continue à gauche ; sinon à droite. Chaque étape descend d'un niveau : complexité O(h), soit O(log n) pour un arbre équilibré, mais O(n) pour un arbre filiforme (obtenu en insérant des valeurs déjà triées). Insertion : même descente, puis création d'une feuille à l'emplacement vide atteint.

def recherche(a, x):

if a is None: return False

if x == a.valeur: return True

if x < a.valeur: return recherche(a.gauche, x)

return recherche(a.droit, x)

Le programme se limite à la recherche et à l'insertion ; l'équilibrage (arbres AVL, rouge-noir) est hors programme mais l'idée qu'un arbre dégénéré perd son efficacité doit être comprise.

4Exercice type et pièges

Énoncé type : « Écrire une fonction qui renvoie le nombre de feuilles d'un arbre binaire. » Cas de base : arbre vide → 0 ; nœud sans enfant → 1 ; sinon somme sur les deux sous-arbres.

def nb_feuilles(a):

if a is None: return 0

if a.gauche is None and a.droit is None: return 1

return nb_feuilles(a.gauche) + nb_feuilles(a.droit)

Autres classiques : vérifier qu'un arbre est un ABR (le parcours infixe doit être strictement croissant), trouver le minimum d'un ABR (descendre tout à gauche), calculer la hauteur minimale pour n nœuds (⌈log₂(n+1)⌉).

Pièges : oublier le cas de base None ; confondre hauteur et profondeur, ou les deux conventions de hauteur ; croire qu'un ABR est toujours équilibré ; écrire un parcours infixe qui traite la racine avant le sous-arbre gauche ; insérer des valeurs triées et attendre une recherche en O(log n).

Définitions à connaître par cœur

Racine / feuille
La racine est le nœud sans parent au sommet de l'arbre ; une feuille est un nœud sans enfant.
Hauteur
Nombre de nœuds (ou d'arêtes selon la convention) sur le plus long chemin de la racine à une feuille.
Parcours infixe
Parcours en profondeur qui traite le sous-arbre gauche, puis la racine, puis le sous-arbre droit ; il trie un ABR.
Arbre binaire de recherche
Arbre binaire dont chaque nœud a des valeurs plus petites à gauche et plus grandes à droite ; recherche en O(h).
Arbre équilibré
Arbre dont la hauteur est de l'ordre de log₂(n) ; les opérations y sont efficaces, contrairement à un arbre filiforme.
Parcours en largeur
Parcours niveau par niveau, de la racine vers les feuilles, réalisé avec une file.

Quiz : teste-toi sur arbres binaires et arbres binaires de recherche

8 questions corrigées. Réponds avant d'ouvrir la correction !

1. Quel parcours d'un arbre binaire de recherche renvoie les valeurs triées ?

  • A.Préfixe
  • B.Infixe
  • C.Suffixe
  • D.En largeur
Voir la réponse

Réponse : B. Infixe

Gauche (plus petits), racine, droite (plus grands) : l'infixe respecte l'ordre croissant.

2. Un arbre binaire de hauteur h contient au plus combien de nœuds ?

  • A.h
  • B.2h
  • C.2^h − 1
  • D.
Voir la réponse

Réponse : C. 2^h − 1

Chaque niveau k contient au plus 2^(k−1) nœuds ; la somme sur h niveaux vaut 2^h − 1.

3. Quelle est la complexité de la recherche dans un ABR équilibré de n nœuds ?

  • A.O(1)
  • B.O(log n)
  • C.O(n)
  • D.O(n log n)
Voir la réponse

Réponse : B. O(log n)

Chaque comparaison élimine un sous-arbre entier ; la hauteur d'un arbre équilibré est en log₂(n).

4. On insère successivement 1, 2, 3, 4, 5 dans un ABR vide. Quelle est sa forme ?

  • A.Un arbre complet
  • B.Un arbre filiforme (dégénéré) vers la droite
  • C.Un arbre de hauteur 3
  • D.Un arbre équilibré
Voir la réponse

Réponse : B. Un arbre filiforme (dégénéré) vers la droite

Chaque valeur est plus grande que la précédente et va à droite : hauteur 5, recherche en O(n).

5. Quelle structure utilise le parcours en largeur ?

  • A.Une pile
  • B.Une file
  • C.Un dictionnaire
  • D.Une liste chaînée
Voir la réponse

Réponse : B. Une file

Les nœuds sont traités dans l'ordre de découverte, niveau par niveau : une file FIFO.

6. Dans le parcours préfixe, la racine est traitée…

  • A.après les deux sous-arbres
  • B.entre les deux sous-arbres
  • C.avant les deux sous-arbres
  • D.jamais
Voir la réponse

Réponse : C. avant les deux sous-arbres

Préfixe = racine d'abord, puis gauche, puis droite ; suffixe = racine en dernier.

7. Quel est le cas de base d'une fonction récursive sur un arbre binaire ?

  • A.La racine
  • B.Une feuille
  • C.L'arbre vide (None)
  • D.Un nœud à un seul enfant
Voir la réponse

Réponse : C. L'arbre vide (None)

Toute fonction récursive sur un arbre traite d'abord l'arbre vide, puis se rappelle sur les sous-arbres.

8. Où se trouve le minimum d'un arbre binaire de recherche non vide ?

  • A.À la racine
  • B.Sur la feuille la plus profonde
  • C.Sur le nœud le plus à gauche
  • D.Sur le nœud le plus à droite
Voir la réponse

Réponse : C. Sur le nœud le plus à gauche

Les valeurs décroissent en descendant à gauche : le minimum est atteint en descendant à gauche tant que possible.

Envie de QCM générés depuis ton propre cours ?

Créer mes QCM gratuitement

Questions fréquentes

Quelle est la différence entre un arbre binaire et un arbre binaire de recherche ?

Un arbre binaire est une structure (chaque nœud a au plus deux enfants) ; un ABR ajoute une contrainte d'ordre sur les valeurs (plus petites à gauche, plus grandes à droite) qui rend la recherche efficace.

Comment retenir les trois parcours en profondeur ?

Le nom indique la position de la racine : PRÉfixe = racine avant, INfixe = racine entre, SUFfixe = racine après les sous-arbres gauche et droit, toujours parcourus dans cet ordre.

Pourquoi la hauteur compte-t-elle autant ?

Parce que la recherche et l'insertion dans un ABR coûtent un nombre d'étapes égal à la hauteur : log₂(n) pour un arbre équilibré, n pour un arbre filiforme.

Que tombe-t-il au bac sur les arbres ?

Compléter ou écrire des fonctions récursives (taille, hauteur, feuilles, recherche, insertion), dérouler un parcours sur un arbre donné, dessiner l'ABR obtenu par une suite d'insertions, justifier une complexité.