Les arbres en algorithmique : Structures de données & Parcours

Telechargé par djeinasall80
UNDB
UNDB
FILIERES DSI, SDS ET IAA
Chapitre : les arbres en algorithmique
En algorithmique et en informatique, les arbres sont des structures de données fondamentales
utilisées pour représenter des relations hiérarchiques entre des éléments.
Ils apparaissent dans de nombreux domaines : systèmes de fichiers, intelligence artificielle,
bases de données, compilation, réseaux, etc.
Contrairement aux tableaux ou aux listes, un arbre permet d’organiser les données selon une
structure non linéaire, ce qui facilite certaines opérations comme la recherche, l’insertion ou
la classification.
Définition formelle :
Un arbre est une structure de données composée d’un ensemble fini de nœuds, organisée de
manière hiérarchique, telle que :
Il existe un nœud particulier appelé la racine
Chaque nœud (sauf la racine) a un seul parent
Un nœud peut avoir zéro, un ou plusieurs enfants
Il n’existe aucun cycle (on ne peut jamais revenir à un nœud déjà visité)
Il existe un seul chemin unique entre la racine et chaque nœud
Composants essentiels d’un arbre
Un arbre est constitué des éléments suivants :
§ Un nœud est un élément de base de l’arbre.
Il contient :
o Une valeur (donnée)
o Éventuellement des références vers ses enfants
§ La racine est le premier nœud de l’arbre.
o Elle n’a aucun parent
o Tous les autres nœuds en dépendent directement ou indirectement
UNDB
UNDB
FILIERES DSI, SDS ET IAA
§ Parent et enfant
o Un parent est un nœud qui possède au moins un enfant
o Un enfant est un nœud issu directement d’un parent
§ Une feuille est un nœud qui :
o N’a aucun enfant
o Se trouve à l’extrémité de l’arbre
Notions importantes associées aux arbres
§ Hauteur d’un arbre : La hauteur d’un arbre est la longueur du plus long
chemin entre la racine et une feuille.
§ Profondeur d’un nœud : La profondeur d’un nœud est le nombre d’arêtes
entre ce nœud et la racine.
§ Degré d’un nœud : Le degré d’un nœud est le nombre de ses enfants.
Les différents types darbre
1. Arbre général (ou arbre n-aire)
Un arbre général (également appelé arbre n-aire) est une structure de données hiérarchique
plus flexible que l'arbre binaire. Contrairement à ce dernier, où chaque parent est limité à deux
enfants, un nœud dans un arbre n-aire peut posséder un nombre arbitraire de fils, allant de
zéro à N. Cette structure est idéale pour représenter des hiérarchies complexes de la vie réelle,
comme l'arborescence des dossiers d'un système d'exploitation, la structure d'un document
HTML (le DOM) ou encore un arbre généalogique étendu.
Un arbre général est un arbre où :
Un nœud peut avoir un nombre quelconque d’enfants
Il n’y a pas de limite fixe
Exemple :
Structure d’un système de fichiers
Organigramme d’une entreprise.
UNDB
UNDB
FILIERES DSI, SDS ET IAA
2. Arbre binaire
Un arbre binaire est une structure hiérarchique chaque nœud peut avoir au plus deux enfants,
possédant une racine, des nœuds internes et des feuilles. Sa structure récursive et ses propriétés
de profondeur, hauteur et degré en font une structure extrêmement utile pour représenter des
données hiérarchiques, organiser des recherches efficaces et modéliser de nombreux problèmes
en informatique.
Un arbre binaire est un arbre dans lequel :
Chaque nœud a au plus deux enfants ;
On distingue l’enfant gauche et l’enfant droit.
Très utilisé en algorithmique.
3. Types particuliers d’arbres binaires
3.1 Arbre binaire complet
Un arbre binaire complet est un arbre binaire organisé de manière optimale, avec tous les
niveaux remplis sauf éventuellement le dernier, et les nœuds du dernier niveau positionnés de
gauche à droite. Sa structure compacte permet de maintenir une faible hauteur, ce qui le rend
particulièrement efficace pour les applications nécessitant un accès rapide et équilibré aux
nœuds, comme les files de priorité ou les algorithmes de tri par tas.
Utilisé pour les tas (heap).
UNDB
UNDB
FILIERES DSI, SDS ET IAA
3.2 Arbre binaire parfait
Un arbre binaire parfait est un arbre strictement structuré chaque niveau est entièrement
rempli, chaque nœud interne possède deux enfants et toutes les feuilles se situent au même
niveau. Cette organisation symétrique garantit un équilibre optimal, une hauteur minimale et
une efficacité maximale pour les opérations classiques sur les arbres binaires.
Tous les niveaux sont entièrement remplis
Toutes les feuilles sont à la même profondeur
Arbre binaire dégénéré
Un arbre dégénéré (ou arbre filiforme) est une forme spécifique d'arbre chaque nœud parent
ne possède qu'un seul et unique enfant. Contrairement à une structure arborescente classique
qui se ramifie, l'arbre dégénéré se développe de manière linéaire, perdant ainsi sa hiérarchie
bidimensionnelle. Visuellement, il ressemble davantage à une liste chaînée qu'à un arbre. Cette
configuration se produit généralement lors de l'insertion de données déjà triées (par ordre
croissant ou décroissant) dans un arbre binaire de recherche non équilibré.
Sur le plan des performances, l'arbre dégénéré représente le "pire scénario" (worst-case) pour
les opérations de recherche, d'insertion et de suppression.
Chaque nœud n’a qu’un seul enfant
Ressemble à une liste chaînée
UNDB
UNDB
FILIERES DSI, SDS ET IAA
4. Arbres selon l’ordre des valeurs
4.1 Arbre binaire de recherche (ABR / BST)
Un Arbre Binaire de Recherche (ABR) est une structure de données hiérarchique où chaque
élément, appelé nœud, contient une valeur (ou clé) et possède au maximum deux enfants,
nommés fils gauche et fils droit. La caractéristique fondamentale qui le distingue d'un arbre
binaire classique est son organisation ordonnée : pour n'importe quel nœud donné, toutes les
valeurs situées dans son sous-arbre gauche sont strictement inférieures à la sienne, tandis que
toutes les valeurs de son sous-arbre droit lui sont supérieures ou égales.
Un arbre binaire de recherche respecte la règle :
valeurs du sous-arbre gauche < nœud
valeurs du sous-arbre droit > nœud
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!