Arbres et arbres binaires de recherche
Vocabulaire des arbres (racine, nœud, feuille, hauteur, taille), arbres binaires, implémentation, parcours en profondeur (préfixe, infixe, suffixe) et en largeur, arbres binaires de recherche : recherche, insertion et coût.
1. Vocabulaire
Définition
Un arbre est une structure hiérarchique formée de nœuds ; le nœud de départ est la racine, les nœuds sans enfant sont les feuilles. La taille est le nombre de nœuds ; la hauteur est le nombre de nœuds sur la plus longue branche (convention : hauteur $1$ pour une racine seule). Dans un arbre binaire, chaque nœud a au plus deux enfants : un sous-arbre gauche et un sous-arbre droit.
2. Implémentation et parcours
Exemple · Classe Noeud
class Noeud:
def __init__(self, cle, gauche=None, droit=None):
self.cle, self.gauche, self.droit = cle, gauche, droit
def taille(a):
if a is None:
return 0
return 1 + taille(a.gauche) + taille(a.droit)Propriété · Parcours en profondeur
Préfixe : nœud, puis gauche, puis droit. Infixe : gauche, nœud, droit. Suffixe : gauche, droit, nœud. Le parcours en largeur visite les nœuds niveau par niveau, à l'aide d'une file. Sur l'arbre du cours : infixe $1, 3, 4, 6, 7, 8, 10, 14$ ; largeur $8, 3, 10, 1, 6, 14, 4, 7$.
3. Arbres binaires de recherche (ABR)
Définition
Un ABR est un arbre binaire où, pour chaque nœud, les clés du sous-arbre gauche sont inférieures à sa clé et celles du sous-arbre droit supérieures. Son parcours infixe donne les clés triées.
Méthode · Recherche dans un ABR
def recherche(a, x):
while a is not None:
if x == a.cle:
return True
a = a.gauche if x < a.cle else a.droit
return FalsePropriété · Coût
La recherche et l'insertion suivent une seule branche : coût proportionnel à la hauteur $h$. Pour un arbre équilibré de $n$ nœuds, $h \approx \log_2 n$ ; pour un arbre « peigne » (clés insérées dans l'ordre), $h = n$.
Activité · Insérer dans un ABR
inserer(a, x) qui renvoie l'arbre après insertion de x.def inserer(a, x):
if a is None:
return Noeud(x)
if x < a.cle:
a.gauche = inserer(a.gauche, x)
else:
a.droit = inserer(a.droit, x)
return aS'entraîner
Exercices corrigés
🎓 20 exercices corrigés et un quiz vous attendent dans ce chapitre.
Créez votre compte gratuit pour voir les corrections, faire les quiz et suivre votre progression.
Vocabulaire
★☆☆Dans l'arbre du cours, quelle est la racine ? Citer les feuilles.
Taille et hauteur
★☆☆Taille et hauteur de l'arbre du cours ?
Parcours préfixe
★★☆Donner le parcours préfixe de l'arbre du cours.
Parcours suffixe
★★☆Donner le parcours suffixe.
Parcours infixe
★☆☆Pourquoi le parcours infixe donne-t-il les clés dans l'ordre croissant ?
Vérifier un ABR
★★☆On remplace la clé $7$ par $9$. Est-ce toujours un ABR ?
Recherche
★☆☆Quels nœuds visite la recherche de $7$ ?
Recherche infructueuse
★★☆Quels nœuds visite la recherche de $12$ ? Résultat ?
Insertion
★★☆Où s'insère la clé $5$ ?
Ordre d'insertion
★★☆Dessiner l'ABR obtenu en insérant $1, 2, 3, 4, 5$ dans cet ordre. Hauteur ?
Arbre équilibré
★★☆Proposer un ordre d'insertion de $1$ à $7$ donnant un arbre de hauteur $3$.
Hauteur
★★★Écrire une fonction récursive hauteur(a) (hauteur $0$ pour l'arbre vide).
Nombre de feuilles
★★★Écrire une fonction feuilles(a) qui compte les feuilles.
Minimum d'un ABR
★★☆Où se trouve la plus petite clé d'un ABR ? Écrire la fonction.
Parcours en largeur
★★★Écrire le parcours en largeur à l'aide d'une file.
Taille maximale
★★☆Combien de nœuds au plus dans un arbre binaire de hauteur $h$ ?
Coût de la recherche
★★☆Combien d'étapes au plus pour chercher dans un ABR équilibré d'un million de nœuds ?
Arbre d'expression
★★☆L'expression $(3 + 4) \times 2$ est représentée par un arbre. Quelle est la racine ? Quel parcours donne la notation polonaise inverse ?
Exemples d'arbres
★☆☆Citer deux structures arborescentes de la vie courante ou de l'informatique.
Vrai ou faux
★★☆a) Une feuille n'a pas d'enfant. b) Le parcours infixe d'un ABR est trié. c) La recherche dans un ABR est toujours logarithmique.
Vérifier
Avez-vous bien compris ?
Répondez au quiz : la correction s'affiche immédiatement.