Types d'arbre binaire

28 Apr 2019 28 Apr 2019 18315 vues ESSADDOUKI Mostafa 5 min de lecture
Complexité algorithmique
1 Introduction à l'analyse des algorithmes 2 Notations asymptotiques 3 Opérations élémentaires et modèles de coût 4 Complexité temporelle et spatiale 5 Méthode de comptage des pas 6 Méthode de comptage des pas pour les boucles
Diviser pour régner & algorithmes de tri
7 Rappel sur l'approche récursive 8 Diviser pour régner 9 la recherche dichotomique 10 Tri par fusion 11 Tri rapide 12 Analyse des fonctions récursives
Les arbres binaires
13 Introduction aux arbres binaires 14 Définitions récursives des arbres 15 Propriétés des arbres binaires 16 Types d'arbre binaire 17 Parcours en profondeur des arbres binaires 18 Parcours en largeur des arbres binaires 19 Exercices corrigés sur les arbres - TD 1 20 Exercices corrigés sur les arbres - TD 2 21 Exercices corrigés sur les arbres - TD 3 22 DS - Arbres binaires de recherche équilibrés (AVL) 23 DS - Codage de Huffman - Compression de données
Algorithmes gloutons
24 Introduction aux algorithmes gloutons 25 Problème de la sélection d'activités 26 Problème de séquencement des tâches 27 Problème du Sac à Dos fraction
Programmation dynamique
28 Introduction à la programmation dynamique 29 Le concept de sous-structure optimale 30 Le concept de sous-problèmes superposés 31 Méthodes de la programmation dynamique 32 Différence entre la programmation dynamique, l'approche diviser pour régner, et les algorithmes gloutons 33 Calculer les nombres de catalan en C++ et Python 34 Calculer le coefficient binomial 35 Le nombre de façons pour construire un mur de dimension 4*N 36 Défi de conversion de mots 37 Décomposition de phrases à partir d'un dictionnaire 38 La collection de pièces dans un labyrinthe 39 Nombre de façons de regrouper les étudiants 40 Compter tous les chemins possibles dans une grille MxN
Méta heuristique
41 Algorithmes heuristiques et métaheuristiques 42 Algorithme de Recuit simulé 43 Algorithme Colonies de fourmis
Théorie des graphes
44 Introduction et notions fondamentales 45 Chemins, cycles et connexité 46 Représentations des graphes 47 Parcours de graphes 48 Algorithme de Dijkstra 49 Algorithme A* 50 Algorithme de Bellman-Ford 51 Algorithme Floyd-Warshall 52 Coloration des graphes
Base de données et SQL
53 Introduction au langage SQL 54 Concepts de base de SGBDR 55 Syntaxes de différentes instructions SQL 56 Création et suppression d'une base de données 57 Opérateurs SQL 58 Les contraintes en SQL 59 Création et suppression des tables en SQL 60 Insertion et modifications des enregistrements 61 Extraction des données - SELECT 62 Filtrer les données - WHERE 63 Recherche de motifs - LIKE 64 Trier les données - ORDER BY 65 Les jointures en SQL - JOIN 66 Fonctions d'agrégation en SQL - SUM, COUNT, AVG, MIN et MAX 67 Organiser des données identiques en groupes - GROUP BY et HAVING 68 Les sous-requêtes en SQL 69 Les fonctions SQL de manipulation de date 70 DS - langage SQL 71 Exercices corrigés de langage SQL
Introduction à l'intelligence artificielle
Introduction à la théorie des jeux
Préparation aux concours
72 Réseau de distribution d'eau 73 Arbre d'expression arithmétique 74 Exploration d'une grotte souterraine

Types d'arbres binaires

Objectifs

Distinguer les différentes catégories d'arbres binaires (plein, complet, parfait, équilibré) et comprendre leurs propriétés caractéristiques ainsi que leurs applications.

Prérequis

Notions de base sur les arbres binaires, hauteur, niveaux et nœuds internes.

Arbre binaire plein (Full Binary Tree)

Définition — Arbre binaire plein

Un arbre binaire plein (ou arbre binaire strict) est un arbre binaire dans lequel chaque nœud a 0 ou 2 enfants. Autrement dit, tous les nœuds, à l'exception des feuilles, ont exactement deux enfants.

Exemples d'arbres binaires pleins

Exemples d'arbres binaires pleins

Théorème — Propriété fondamentale

Dans un arbre binaire plein, le nombre de feuilles est égal au nombre de nœuds internes plus un :

\[ \boxed{L = I + 1} \]

où :

  • \(L\) = nombre de feuilles (nœuds sans enfants)
  • \(I\) = nombre de nœuds internes (nœuds ayant deux enfants)
Exemple de vérification
Arbre plein
        A
       / \
      B   C
     / \   \
    D   E   F
   / \       \
  G   H       I
Résultat
Feuilles (L) = 5 (G, H, E, F, I)
Nœuds internes (I) = 4 (A, B, C, D)
Vérification : 5 = 4 + 1 ✓

Arbre binaire complet (Complete Binary Tree)

Définition — Arbre binaire complet

Un arbre binaire complet est un arbre binaire dans lequel tous les niveaux sont complètement remplis, sauf peut-être le dernier niveau, et le dernier niveau a toutes ses clés aussi à gauche que possible.

Exemples d'arbres binaires complets

Exemples d'arbres binaires complets

Propriétés
  • Un arbre binaire complet peut être représenté efficacement par un tableau (implémentation des tas binaires).
  • Pour un nœud à l'indice \(i\) (en indexation 1) :
    • Enfant gauche : indice \(2i\)
    • Enfant droit : indice \(2i + 1\)
    • Parent : indice \(\lfloor i/2 \rfloor\)
Application

Les arbres binaires complets sont utilisés pour implémenter les tas binaires (heap), structures de données fondamentales pour les files de priorité et l'algorithme de tri par tas (heapsort).

Arbre binaire parfait (Perfect Binary Tree)

Définition — Arbre binaire parfait

Un arbre binaire parfait est un arbre binaire dans lequel tous les nœuds internes ont deux enfants et toutes les feuilles sont au même niveau.

Exemples d'arbres binaires parfaits

Exemples d'arbres binaires parfaits

Théorème — Propriétés de l'arbre parfait

Pour un arbre binaire parfait de hauteur \(h\) (avec la racine à la hauteur \(1\)) :

\[ \boxed{N = 2^{h} - 1} \]

où \(N\) est le nombre total de nœuds.

Autres propriétés :

  • Nombre de feuilles : \(L = 2^{h-1}\)
  • Nombre de nœuds internes : \(I = 2^{h-1} - 1\)
  • Hauteur : \(h = \log_2(N + 1)\)
Complément

Un arbre parfait est à la fois plein et complet. C'est la structure la plus équilibrée possible pour une hauteur donnée.

Arbre binaire équilibré (Balanced Binary Tree)

Définition — Arbre binaire équilibré

Un arbre binaire équilibré est un arbre binaire dont la hauteur est \(O(\log n)\), où \(n\) est le nombre de nœuds. Cette propriété garantit des opérations de recherche, d'insertion et de suppression efficaces.

Exemples d'arbres binaires équilibrés

Exemples d'arbres binaires équilibrés (AVL et rouge-noir)

Structures équilibrées courantes
  • Arbre AVL : Maintient la hauteur en \(O(\log n)\) en s'assurant que la différence entre les hauteurs des sous-arbres gauche et droit est au plus 1 (facteur d'équilibre \(\in \{-1, 0, 1\}\)).
  • Arbre rouge-noir (Red-Black Tree) : Maintient la hauteur en \(O(\log n)\) en respectant des propriétés de coloration :
    • Chaque nœud est rouge ou noir
    • La racine est noire
    • Pas deux nœuds rouges adjacents
    • Chaque chemin racine → feuille contient le même nombre de nœuds noirs
Complexités garanties

Pour les arbres binaires de recherche équilibrés (AVL, rouge-noir) :

\[ \boxed{T_{\text{recherche}} = O(\log n)} \] \[ \boxed{T_{\text{insertion}} = O(\log n)} \] \[ \boxed{T_{\text{suppression}} = O(\log n)} \]

Ces performances sont optimales pour une structure de données dynamique basée sur les comparaisons.

Comparaison des types d'arbres binaires

Type d'arbre Caractéristique principale Propriété clé Application typique
Plein (Full) Chaque nœud a 0 ou 2 enfants \(L = I + 1\) Arbres d'expression, arbres binaires stricts
Complet (Complete) Tous niveaux remplis sauf dernier, tassé à gauche Représentation compacte par tableau Tas binaires (heap), heapsort
Parfait (Perfect) Tous nœuds internes ont 2 enfants, toutes feuilles au même niveau \(N = 2^h - 1\) Structure idéale théorique
Équilibré (Balanced) Hauteur \(O(\log n)\) Recherche, insertion, suppression en \(O(\log n)\) AVL, arbres rouge-noir, B-arbres

Hiérarchie et relations

Relations entre les types
  • Un arbre parfait est toujours plein et complet.
  • Un arbre complet n'est pas nécessairement plein.
  • Un arbre plein n'est pas nécessairement complet.
  • Un arbre équilibré (AVL, rouge-noir) n'est pas nécessairement parfait, mais garantit une hauteur logarithmique.
Résumé visuel
Arbre parfait
    ├── Arbre plein (tous les nœuds internes ont 2 enfants)
    └── Arbre complet (niveaux remplis, tassé à gauche)

Arbre équilibré → hauteur = O(log n) (AVL, Rouge-Noir)

L'essentiel en bref

Points clés à retenir
  • Arbre plein (full) : chaque nœud a 0 ou 2 enfants. Relation \(L = I + 1\).
  • Arbre complet (complete) : tous les niveaux remplis sauf le dernier, tassé à gauche. Représentation par tableau possible.
  • Arbre parfait (perfect) : tous les nœuds internes ont 2 enfants ET toutes les feuilles au même niveau. \(N = 2^h - 1\).
  • Arbre équilibré (balanced) : hauteur \(O(\log n)\). AVL et arbres rouge-noir garantissent cette propriété.
  • Les arbres équilibrés offrent les meilleures performances pour les dictionnaires dynamiques (\(O(\log n)\) en recherche, insertion, suppression).
Conseils pratiques
  • Utilisez un tas binaire (arbre complet) pour les files de priorité.
  • Utilisez un AVL ou rouge-noir pour les ensembles/dictionnaires avec des opérations fréquentes.
  • Utilisez un arbre plein pour représenter des expressions arithmétiques binaires.

Un peu d'histoire

Les arbres AVL ont été inventés en 1962 par Georgy Adelson-Velsky et Evgenii Landis (d'où le nom AVL). Les arbres rouge-noir ont été introduits par Rudolf Bayer en 1972 sous le nom d'"arbres binaires symétriques" et ont été popularisés par Leonidas Guibas et Robert Sedgewick en 1978. Ces structures équilibrées sont aujourd'hui utilisées dans les bibliothèques standard de nombreux langages (C++ STL `std::map`, Java `TreeMap`).

Sortie
// La sortie apparaîtra ici…
Prêt · Ctrl+Entrée pour exécuter

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.