Aller au contenu

Numérique et sciences informatiques (spécialité) · TerminaleBac

Algorithmes sur les arbres binaires : cours de Terminale NSI

Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur

L'essentiel

  • Un arbre binaire est vide, ou formé d'une racine avec un fils gauche et un fils droit, eux-mêmes des arbres binaires : presque tous les algorithmes s'écrivent donc par récursivité, avec le cas vide comme cas de base.
  • Taille = nombre de nœuds ; hauteur = longueur du plus long chemin de la racine à un nœud (un arbre réduit à sa racine est de hauteur 0, l'arbre vide de hauteur −1 par convention).
  • Parcours en profondeur : préfixe (racine, gauche, droit), infixe (gauche, racine, droit), suffixe (gauche, droit, racine) ; seul l'ordre des trois étapes change.
  • Parcours en largeur : niveau par niveau, de gauche à droite, avec une file ; ce n'est pas une récursion.
  • Sur un arbre binaire de recherche, le parcours infixé donne les clés dans l'ordre croissant. Chaque nœud est visité une fois : coût proportionnel à la taille.

Pourquoi étudier les algorithmes sur les arbres

Une liste, un tableau, une pile : ce sont des structures linéaires, où les éléments se suivent les uns les autres. L'arbre binaire est différent. Il est rangé dans la catégorie des structures hiérarchiques : chaque élément peut avoir deux « suivants » et non un seul.4 Cette forme sert à représenter une organisation (dossiers et sous-dossiers, décisions successives, expressions de calcul) et à ranger des données pour les retrouver vite.

Le programme de Terminale demande de savoir calculer la taille et la hauteur d'un arbre, et de le parcourir de différentes manières.2 Dans ce cours, tu vas apprendre à écrire ces algorithmes toi-même, à les dérouler à la main sur un exemple, et à éviter les erreurs que l'on retrouve chaque année dans les copies du bac.

Le fil conducteur est une idée simple : un arbre est fait d'arbres plus petits. Dès que tu l'as compris, la plupart des algorithmes tiennent en trois ou quatre lignes.

Définition d'un arbre binaire

Cette définition est récursive : elle utilise le mot qu'elle définit. Cela ne tourne pas en rond, car il y a un point d'arrêt, l'arbre vide. Un arbre contenant un seul nœud est donc un nœud dont les deux fils sont des arbres vides.

Un nœud contient une donnée. Pour simplifier, on suppose ici que ces données sont des entiers.4 Une même valeur peut apparaître dans deux nœuds différents.4

Représenter un arbre binaire en Python

Pour programmer, il faut choisir une représentation. Les sujets de bac notent l'absence d'arbre avec la valeur None de Python ; dans tous les autres cas, l'arbre est un nœud.5 Un nœud regroupe sa valeur et ses deux sous-arbres. Nous utilisons une classe, mais un énoncé peut employer un tuple ou un dictionnaire : seule la lecture des champs change, pas la logique des algorithmes.

Écrire une fonction récursive sur un arbreÉtapes successives : traiter l'arbre vide, appeler la fonction sur les deux fils, combiner avec la racine, vérifier sur un petit arbre.1Cas de baseQue renvoyer pour l'arbre vide (None) ?2Appels sur les filsAppeler la fonction sur gauche et sur droit.3CombinerAssembler ces résultats avec la racine.4VérifierTester sur vide, racine seule, petit arbre.
  1. Cas de baseQue renvoyer pour l'arbre vide (None) ?
  2. Appels sur les filsAppeler la fonction sur gauche et sur droit.
  3. CombinerAssembler ces résultats avec la racine.
  4. VérifierTester sur vide, racine seule, petit arbre.
Écrire une fonction récursive sur un arbre · La même démarche sert pour la taille, la hauteur et les parcours.

Taille et hauteur d'un arbre

Comment raisonner ? Un arbre non vide contient sa racine, plus tous les nœuds de son sous-arbre gauche, plus tous ceux de son sous-arbre droit. On obtient la relation, pour un arbre non vide :

taille(a)=1+taille(gauche)+taille(droit).\text{taille}(a) = 1 + \text{taille}(\text{gauche}) + \text{taille}(\text{droit}).

Il suffit de la traduire en Python.

Pour un arbre non vide, la hauteur est 11 de plus que la hauteur du plus haut de ses deux fils, car il faut ajouter l'arête qui relie la racine à ce fils. Pour que la formule marche aussi quand un fils est vide, on convient que l'arbre vide a pour hauteur −1-1 : une racine seule vaut alors 1+max⁡(−1,−1)=01+\max(-1,-1)=0.

hauteur(a)=1+max⁡(hauteur(gauche), hauteur(droit)).\text{hauteur}(a) = 1 + \max\big(\text{hauteur}(\text{gauche}),\ \text{hauteur}(\text{droit})\big).

Arbres complets et arbres filiformes : les bornes de la hauteur

Calculons la taille d'un arbre complet de hauteur hh. Il y a 11 nœud à la profondeur 00, 22 à la profondeur 11, 44 à la profondeur 22, et ainsi de suite jusqu'à 2h2^h. Le total est la somme d'une suite géométrique :

n=1+2+4+⋯+2h=2h+1−1.n = 1 + 2 + 4 + \dots + 2^h = 2^{h+1} - 1.

Par exemple, un arbre complet de hauteur 33 contient 24−1=152^4-1=15 nœuds.

Les parcours en profondeur

Parcourir un arbre, c'est visiter chacun de ses nœuds une fois, dans un ordre précis, par exemple pour afficher ou rassembler ses valeurs. Il existe plusieurs façons de le faire.2 Les trois premières sont dites en profondeur : on descend jusqu'au bout d'une branche avant de passer à la suivante. Elles ne diffèrent que par le moment où l'on traite la racine, par rapport aux deux appels récursifs.

Les parcours sur l'arbre d'exemple
ParcoursOrdre de visiteRésultat
Préfixeracine, gauche, droit8, 3, 1, 6, 4, 7, 10, 14, 13
Infixegauche, racine, droit1, 3, 4, 6, 7, 8, 10, 13, 14
Suffixegauche, droit, racine1, 4, 7, 6, 3, 13, 14, 10, 8
Largeurniveau par niveau8, 3, 10, 1, 6, 14, 4, 7, 13
Les parcours sur l'arbre d'exemple · Même arbre, ordres de visite différents.
Démonstration · Pourquoi la fonction se termine et visite chaque nœud une fois

Chaque appel récursif porte sur un sous-arbre strictement plus petit que l'arbre courant : il a au moins un nœud de moins (la racine). La taille décroît donc strictement et finit par atteindre 00, c'est-à-dire l'arbre vide, où la fonction s'arrête sans nouvel appel. Par ailleurs, chaque nœud est la racine d'exactement un sous-arbre, donc la fonction est appelée une seule fois sur lui avec un arbre non vide. Pour nn nœuds, il y a ainsi nn appels sur des nœuds et n+1n+1 appels sur des arbres vides (chaque nœud a deux fils, soit 2n2n appels, dont n−1n-1 sur des nœuds non racine, donc 2n−(n−1)=n+12n-(n-1)=n+1 sur des arbres vides). Le nombre total d'appels est proportionnel à nn : le coût est linéaire en la taille.

Le parcours en largeur

Le parcours en largeur visite l'arbre niveau par niveau : d'abord la racine, puis tous les nœuds de profondeur 11 de gauche à droite, puis ceux de profondeur 22, etc. Il figure au programme et revient dans les sujets : un sujet de baccalauréat demande d'écrire une fonction qui, pour un arbre donné, fournit sous forme de liste les étiquettes de ses nœuds dans l'ordre d'un parcours en largeur.5

Sur l'arbre d'exemple, on lit : 88 ; puis 3,103, 10 ; puis 1,6,141, 6, 14 ; puis 4,7,134, 7, 13. Le résultat est [8,3,10,1,6,14,4,7,13][8, 3, 10, 1, 6, 14, 4, 7, 13].

Cette fois, la récursivité ne convient pas directement : après avoir visité 33, on ne descend pas dans ses fils, on passe à 1010. Il faut donc mémoriser les nœuds à visiter plus tard, dans l'ordre où on les a rencontrés. La structure adaptée est la file : premier entré, premier sorti. On y met la racine, puis on répète : retirer le nœud en tête de file, le traiter, ajouter ses fils non vides à la fin de la file.

Le cas des arbres binaires de recherche

Une classe particulière d'arbres binaires est celle des arbres binaires de recherche (ABR). Ils ont pour structure logique un arbre binaire et supportent des opérations de recherche et de modification.6 Leurs nœuds utilisent les mêmes attributs que ceux d'un arbre binaire : le programme note par exemple n.clé la valeur contenue dans le nœud nn.6 La différence est qu'on y range les clés selon un ordre : à la différence d'un arbre binaire quelconque, il faut que l'on puisse comparer entre elles deux clés d'un ABR.6

Méthode générale et erreurs fréquentes

Exercices corrigés

Exercice 1 Taille d'un arbre complet

★☆☆Environ 8 min

On considère un arbre binaire complet de hauteur 44 (la racine est à la profondeur 00).

  1. Combien de nœuds y a-t-il à chacune des profondeurs 00, 11, 22, 33 et 44 ?
  2. En déduire la taille de l'arbre.
  3. Vérifie ton résultat avec la formule 2h+1−12^{h+1}-1.
Indice 1

À la profondeur pp, il y a 2p2^p nœuds dans un arbre complet.

Indice 2

La taille est la somme des nœuds de toutes les profondeurs, de 00 à 44.

Voir la correction pas à pas
  1. Profondeur 00 : 20=12^0 = 1 nœud ; profondeur 11 : 22 ; profondeur 22 : 44 ; profondeur 33 : 88 ; profondeur 44 : 1616.

  2. On additionne : 1+2+4+8+16=311+2+4+8+16 = 31.

  3. Avec la formule : 24+1−1=32−1=312^{4+1}-1 = 32-1 = 31. Les deux calculs coïncident.

Un arbre complet de hauteur 44 contient 3131 nœuds, dont 1616 feuilles. Le nombre de nœuds double presque à chaque niveau ajouté, ce qui explique qu'un arbre équilibré reste de faible hauteur même pour beaucoup de données.

Exercice 2 Hauteur d'un arbre de recherche construit par insertions

★★☆Environ 15 min

On construit un arbre binaire de recherche en insérant, dans cet ordre, les clés 50,30,70,20,40,60,80,3550, 30, 70, 20, 40, 60, 80, 35. La première clé devient la racine. Pour chaque clé suivante, on part de la racine : si la clé est plus petite que celle du nœud, on descend à gauche, sinon à droite, jusqu'à trouver une place vide où l'on crée un nouveau nœud.

  1. Dessine l'arbre obtenu.
  2. Donne son parcours infixe.
  3. Quelle est sa hauteur (racine seule = hauteur 00) ?
Indice 1

Place 3535 en dernier : il est plus petit que 5050, plus grand que 3030, plus petit que 4040.

Indice 2

La hauteur est le nombre d'arêtes du plus long chemin depuis la racine.

Voir la correction pas à pas
  1. On insère 5050 (racine), puis 3030 à gauche de 5050, 7070 à droite, 2020 à gauche de 3030, 4040 à droite de 3030, 6060 à gauche de 7070, 8080 à droite de 7070.

  2. On insère 3535 : 35<5035<50 donc à gauche ; 35>3035>30 donc à droite ; 35<4035<40 donc à gauche de 4040, qui est libre.

  3. Le parcours infixe donne les clés dans l'ordre croissant : [20,30,35,40,50,60,70,80][20, 30, 35, 40, 50, 60, 70, 80].

  4. Le plus long chemin est 50→30→40→3550 \to 30 \to 40 \to 35 : 33 arêtes, soit une hauteur de 33. Les autres branches ont une longueur de 22 au plus.

La hauteur est 33 pour 88 nœuds. Le parcours infixe est bien croissant, comme attendu pour un ABR. Si l'on avait inséré les mêmes clés dans l'ordre croissant, on aurait obtenu un arbre filiforme de hauteur 77 : l'ordre d'insertion compte.

Quiz

8 questions · correction immédiate · ton score reste sur ton appareil.

  1. Quelle est la taille de l'arbre binaire qui possède 1212 nœuds ?

  2. Quelle est la hauteur d'un arbre binaire filiforme de 1010 nœuds ?

  3. Quel est le parcours suffixe de l'arbre d'exemple du cours (racine 88) ?

  4. Quelle structure de données utilise-t-on pour écrire le parcours en largeur ?

  5. Dans le parcours infixe d'un arbre binaire de recherche, dans quel ordre les clés apparaissent-elles ?

  6. Quelles affirmations sont vraies pour un arbre binaire ?

    Plusieurs réponses possibles.

  7. Dans l'algorithme de la hauteur, on prend la somme des hauteurs des deux fils plus un.

  8. Combien de nœuds contient un arbre binaire complet de hauteur 55 ?

Les questions qu'on se pose

Pourquoi la hauteur de l'arbre vide vaut-elle −1 ?

C'est une convention qui rend la formule 1+max⁡(hg,hd)1+\max(h_g, h_d) valable partout. Avec la convention où une racine seule est de hauteur 00,4 il faut que l'arbre vide soit à −1-1 pour que 1+max⁡(−1,−1)=01+\max(-1,-1)=0. Certains énoncés choisissent de compter en nœuds ; la valeur du cas de base change alors. Lis l'exemple du sujet pour savoir laquelle est utilisée.

Quelle est la différence entre parcours en profondeur et parcours en largeur ?

Le parcours en profondeur descend jusqu'aux feuilles d'une branche avant de passer à la suivante et s'écrit naturellement par récursivité (préfixe, infixe, suffixe). Le parcours en largeur visite l'arbre niveau par niveau et utilise une file.5 Les deux visitent chaque nœud une seule fois.

Comment savoir quel parcours utiliser à l'examen ?

L'énoncé le nomme ou donne un exemple de résultat. Si tu dois obtenir les clés d'un arbre de recherche rangées dans l'ordre, c'est l'infixe.3 Si l'énoncé parle de « niveau par niveau » ou demande les étiquettes dans l'ordre d'un parcours en largeur,5 c'est la file. En cas de doute, déroule l'exemple du sujet à la main avec chaque ordre et garde celui qui donne la liste attendue.

Pourquoi mes fonctions récursives plantent-elles sur certains arbres ?

Dans la grande majorité des cas, le cas de base est absent ou mal placé : on essaie de lire .gauche ou .valeur sur None. Écris toujours if a is None: en première ligne. Autre cause possible : un return oublié devant un appel récursif. Enfin, un arbre filiforme très grand peut dépasser la profondeur maximale de récursion de Python ; ce n'est pas le cas dans les exercices du programme.

Sources

Programme visé : Numérique et sciences informatiques - Spécialité Terminale - Algorithmique : Arbres binaires · Éduscol (Ministère de l'Éducation nationale)

  1. Numérique et sciences informatiques - Spécialité Terminale - Algorithmique : Arbres binaires, Éduscol (Ministère de l'Éducation nationale). Consulté le 7 novembre 2026.
  2. Ressource d'accompagnement - Arbres binaires de recherche, Éduscol. Consulté le 7 novembre 2026.
  3. Types abstraits de données et structures de données, Éduscol. Consulté le 7 novembre 2026.
  4. Structures de données - NSI Spécialité, Éduscol. Consulté le 7 novembre 2026.
  5. Sujet du Baccalauréat 2024 - NSI Jour 2, Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
  6. Guide pédagogique - Algorithmes sur arbres binaires, Éduscol. Consulté le 7 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page