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.
- Cas de baseQue renvoyer pour l'arbre vide (None) ?
- Appels sur les filsAppeler la fonction sur gauche et sur droit.
- CombinerAssembler ces résultats avec la racine.
- VérifierTester sur vide, racine seule, petit arbre.
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 :
Il suffit de la traduire en Python.
Pour un arbre non vide, la hauteur est 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 : une racine seule vaut alors .
Arbres complets et arbres filiformes : les bornes de la hauteur
Calculons la taille d'un arbre complet de hauteur . Il y a nœud à la profondeur , à la profondeur , à la profondeur , et ainsi de suite jusqu'à . Le total est la somme d'une suite géométrique :
Par exemple, un arbre complet de hauteur contient 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.
| Parcours | Ordre de visite | Résultat |
|---|---|---|
| Préfixe | racine, gauche, droit | 8, 3, 1, 6, 4, 7, 10, 14, 13 |
| Infixe | gauche, racine, droit | 1, 3, 4, 6, 7, 8, 10, 13, 14 |
| Suffixe | gauche, droit, racine | 1, 4, 7, 6, 3, 13, 14, 10, 8 |
| Largeur | niveau par niveau | 8, 3, 10, 1, 6, 14, 4, 7, 13 |
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 , 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 nœuds, il y a ainsi appels sur des nœuds et appels sur des arbres vides (chaque nœud a deux fils, soit appels, dont sur des nœuds non racine, donc sur des arbres vides). Le nombre total d'appels est proportionnel à : 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 de gauche à droite, puis ceux de profondeur , 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 : ; puis ; puis ; puis . Le résultat est .
Cette fois, la récursivité ne convient pas directement : après avoir visité , on ne descend pas dans ses fils, on passe à . 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 .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
On considère un arbre binaire complet de hauteur (la racine est à la profondeur ).
- Combien de nœuds y a-t-il à chacune des profondeurs , , , et ?
- En déduire la taille de l'arbre.
- Vérifie ton résultat avec la formule .
Indice 1
À la profondeur , il y a nœuds dans un arbre complet.
Indice 2
La taille est la somme des nœuds de toutes les profondeurs, de à .
Voir la correction pas à pas
Profondeur : nœud ; profondeur : ; profondeur : ; profondeur : ; profondeur : .
On additionne : .
Avec la formule : . Les deux calculs coïncident.
Un arbre complet de hauteur contient nœuds, dont 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
On construit un arbre binaire de recherche en insérant, dans cet ordre, les clés . 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.
- Dessine l'arbre obtenu.
- Donne son parcours infixe.
- Quelle est sa hauteur (racine seule = hauteur ) ?
Indice 1
Place en dernier : il est plus petit que , plus grand que , plus petit que .
Indice 2
La hauteur est le nombre d'arêtes du plus long chemin depuis la racine.
Voir la correction pas à pas
On insère (racine), puis à gauche de , à droite, à gauche de , à droite de , à gauche de , à droite de .
On insère : donc à gauche ; donc à droite ; donc à gauche de , qui est libre.
Le parcours infixe donne les clés dans l'ordre croissant : .
Le plus long chemin est : arêtes, soit une hauteur de . Les autres branches ont une longueur de au plus.
La hauteur est pour 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 : l'ordre d'insertion compte.
Quiz
8 questions · correction immédiate · ton score reste sur ton appareil.
-
La taille d'un arbre binaire est son nombre de nœuds, donc ici .4 Il ne faut pas la confondre avec la hauteur, qui dépend de la forme de l'arbre : la hauteur de cet arbre est comprise entre et , mais jamais égale à la taille.
-
Pour une taille fixée, la hauteur maximale est , atteinte par les arbres filiformes.4 Avec , on trouve . La réponse tentante oublie que la hauteur compte les arêtes, non les nœuds.
-
Le suffixe visite le fils gauche, puis le fils droit, puis la racine : la liste finit par . La deuxième réponse est le préfixe, la troisième l'infixe et la quatrième le parcours en largeur. L'erreur tentante est de choisir l'infixe parce qu'il est croissant : cela ne vaut que pour l'infixe d'un ABR.
-
On doit traiter les nœuds dans l'ordre où on les a rencontrés : premier entré, premier sorti, c'est-à-dire une file. Avec une pile, on traiterait d'abord le dernier nœud ajouté et on obtiendrait un parcours en profondeur.
-
Le parcours infixe fournit les éléments d'un ABR rangés du plus petit au plus grand.3 L'ordre d'insertion est faux : deux ABR construits avec des insertions différentes donnent la même liste infixe s'ils contiennent les mêmes clés. L'ordre niveau par niveau est celui du parcours en largeur.
-
Un arbre binaire est vide ou formé d'une racine et de deux fils qui sont des arbres binaires ; deux nœuds différents peuvent contenir la même valeur.4 La troisième affirmation est fausse : un fils peut être l'arbre vide, par exemple pour une feuille.
-
C'est faux : on prend le maximum des deux hauteurs, car la hauteur mesure le plus long chemin et non le total. La somme conviendrait à la taille (qui additionne les nœuds des deux fils), d'où la confusion fréquente entre les deux fonctions.
-
À la profondeur il y a nœuds,4 donc le total est . L'erreur tentante est de répondre , qui est seulement le nombre de nœuds de la dernière profondeur.
Les questions qu'on se pose
Pourquoi la hauteur de l'arbre vide vaut-elle −1 ?
C'est une convention qui rend la formule valable partout. Avec la convention où une racine seule est de hauteur ,4 il faut que l'arbre vide soit à pour que . 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)
- Numérique et sciences informatiques - Spécialité Terminale - Algorithmique : Arbres binaires, Éduscol (Ministère de l'Éducation nationale). Consulté le 7 novembre 2026.
- Ressource d'accompagnement - Arbres binaires de recherche, Éduscol. Consulté le 7 novembre 2026.
- Types abstraits de données et structures de données, Éduscol. Consulté le 7 novembre 2026.
- Structures de données - NSI Spécialité, Éduscol. Consulté le 7 novembre 2026.
- Sujet du Baccalauréat 2024 - NSI Jour 2, Ministère de l'Éducation nationale. Consulté le 7 novembre 2026.
- 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.