Menu
Coddy logo textTech

What is a Heap?

Leçon 2 sur 14 du cours Tas et files de priorité - Série sur les structures de données n°7 de Coddy.

Un tas (heap) est une structure de données en forme d'arbre qui respecte un invariant simple : chaque parent est plus petit que (ou égal à) ses enfants. La plus petite valeur se trouve toujours à la racine, prête à être lue en O(1). Cette variante particulière est appelée un min-heap ; l'image miroir avec un invariant de type "plus grand à la racine" est un max-heap.

L'astuce réside dans le stockage. Même si nous le concevons comme un arbre, un tas réside dans un tableau plat. Pour le nœud à l'indice i :

  • Son parent est à l'indice (i - 1) / 2.
  • Son enfant gauche est à l'indice 2 * i + 1.
  • Son enfant droit est à l'indice 2 * i + 2.

Pas de pointeurs, pas d'objets nœuds : juste des calculs d'indices. Cela rend les tas très efficaces pour le cache et faciles à implémenter.

 

Les cinq opérations principales sur un min-heap sont :

  1. Peek : Retourne la plus petite valeur (la racine).
  2. Insert : Ajoute une valeur et la fait remonter à sa place.
  3. ExtractMin : Supprime et retourne la plus petite valeur.
  4. Size : Retourne le nombre de valeurs stockées.
  5. IsEmpty : Vérifie si le tas est vide.

 

Créons une classe MinHeap !

Essayez vous-même

Cette leçon ne comprend pas de défi de code.

Toutes les leçons de Tas et files de priorité - Série sur les structures de données n°7