Algorithmes sur les arbres binaires et sur les arbres binaires de recherche

icône de pdf
Signaler
Dans cette leçon, tu apprendras à parcourir un arbre binaire, à en calculer la taille et la hauteur, et à insérer ou rechercher une valeur dans un arbre binaire de recherche. Grâce à la récursivité et aux classes Python, tu verras comment exploiter pleinement cette structure pour organiser les données efficacement. Mots-clés : arbre binaire, parcours d’arbre, arbre binaire de recherche, insertion, recherche, récursivité.

Introduction

Les arbres binaires et les arbres binaires de recherche sont des structures de données fondamentales en informatique, largement utilisées pour organiser et manipuler des données. Ils sont particulièrement prisés pour leur efficacité dans les opérations de recherche, d'insertion et de suppression. Cette leçon se propose d'explorer les algorithmes permettant de parcourir un arbre binaire, de calculer sa taille et sa hauteur, ainsi que d'insérer et rechercher une clé dans un arbre binaire de recherche. Ces compétences sont essentielles pour comprendre et exploiter pleinement le potentiel des arbres en programmation, notamment grâce à la récursivité et à l'utilisation de classes pour représenter les nœuds.

Parcours d'un arbre binaire

Un arbre binaire est une structure de données dans laquelle chaque nœud a au plus deux enfants, souvent appelés « gauche » et « droit ». Il existe plusieurs façons de parcourir un arbre binaire, chacune ayant ses propres applications.

Parcours en profondeur

Le parcours en profondeur consiste à explorer aussi loin que possible chaque branche avant de revenir en arrière. Il existe trois types principaux de parcours en profondeur :

  • Parcours préfixe (pré-ordre) : On visite le nœud courant avant de parcourir ses enfants. Cela signifie que l'on parcourt d’abord le nœud, puis le sous-arbre gauche, et enfin le sous-arbre droit.

    picture-in-text

  • Parcours infixe (in-ordre) : On parcourt d’abord le sous-arbre gauche, puis le nœud courant, et enfin le sous-arbre droit. Ce type de parcours est particulièrement utile dans les arbres binaires de recherche, car il permet de récupérer les clés dans l'ordre croissant.

    picture-in-text

  • Parcours postfixe (post-ordre) : On parcourt d’abord le sous-arbre gauche, puis le sous-arbre droit, et enfin le nœud.

    picture-in-text

Dans tous les cas, la fonction traiter(noeud) représente une opération à effectuer sur le nœud, comme par exemple afficher la clé du nœud ou réaliser une action spécifique selon le contexte.

Parcours en largeur

Le parcours en largeur consiste à explorer les nœuds niveau par niveau. On commence par le nœud racine, puis on visite tous les nœuds du niveau suivant, et ainsi de suite. Ce type de parcours est souvent implémenté à l'aide d'une file d'attente.

picture-in-text

Calcul de la taille et de la hauteur d'un arbre binaire

Taille de l'arbre

La taille d’un arbre binaire correspond au nombre total de nœuds qu’il contient. On peut la calculer de manière récursive en additionnant la taille des sous-arbres gauche et droit, et en ajoutant 1 pour le nœud courant.

picture-in-text

Hauteur de l'arbre

La hauteur d’un arbre binaire est définie comme la longueur du plus long chemin de la racine à une feuille. On peut la calculer en déterminant récursivement la hauteur des sous-arbres gauche et droit, puis en prenant le maximum des deux, auquel on ajoute 1.

picture-in-text

Remarque : cette définition considère qu’un arbre vide a une hauteur de -1, ce qui implique qu’un arbre réduit à un seul nœud a une hauteur de 0. D’autres conventions existent, mais celle-ci est couramment utilisée en informatique.

Insertion et recherche dans un arbre binaire de recherche

Un arbre binaire de recherche est un type particulier d’arbre binaire où chaque nœud respecte la propriété suivante : toutes les clés du sous-arbre gauche sont strictement inférieures à la clé du nœud, et toutes les clés du sous-arbre droit sont strictement supérieures. Cette structure permet des opérations de recherche, d'insertion ou de suppression en temps logarithmique dans le meilleur des cas.

Un arbre binaire de recherche est dit équilibré lorsqu’il conserve une hauteur proche du logarithme du nombre de nœuds, comme dans certaines structures spécialisées (ex : arbres AVL, rouges-noirs). Cette propriété garantit des performances optimales pour les opérations courantes.

Définition d'une classe pour représenter un nœud

Voici une manière classique de représenter un nœud d’arbre binaire avec une classe Python :

picture-in-text

Insertion d'une clé

Pour insérer une clé dans un arbre binaire de recherche, on compare la clé à insérer avec celle du nœud courant. Si elle est inférieure, on la place dans le sous-arbre gauche ; sinon, dans le sous-arbre droit. Ce processus est répété récursivement jusqu’à atteindre une position où le nœud est nul (None).

picture-in-text

Recherche d'une clé

La recherche d’une clé dans un arbre binaire de recherche repose sur la comparaison : si la clé est égale à celle du nœud courant, on l’a trouvée ; sinon, on poursuit la recherche dans le sous-arbre gauche ou droit selon le cas.

picture-in-text

Conclusion

Les arbres binaires et les arbres binaires de recherche sont des structures puissantes et polyvalentes, essentielles pour de nombreuses applications informatiques. Les algorithmes de parcours permettent de traiter efficacement les données qu’ils contiennent, tandis que les méthodes d’insertion et de recherche optimisent leur utilisation dans des contextes où la rapidité d’accès est cruciale. La récursivité, la représentation objet des nœuds et la structure équilibrée d’un arbre jouent un rôle fondamental dans la performance des algorithmes. Maîtriser ces concepts est indispensable pour tout étudiant en informatique souhaitant approfondir ses compétences en algorithmique et en structures de données.