NSI · terminale speGratuit
Chapitre 1 — Structures de données
L'essentiel en 30 secondes
En terminale, tu manipules structures de données fondamentales : la liste chaînée (éléments reliés par des pointeurs), la pile (LIFO dernier entré, premier sorti), la file (FIFO premier entré, premier sorti), l'arbre binaire (structure hiérarchique avec au plus fils par nœud) et le dictionnaire (association clé valeur avec accès en en moyenne). Chaque structure ses opérations propres et ses cas d'usage.
Notions clés
- Liste chaînée
- Suite de maillons, chaque maillon contient une valeur et une référence vers le maillon suivant. L'accès au i-ème élément est en O(n).
- Pile (stack)
- Structure LIFO : on empile (push) et on dépile (pop) uniquement par le sommet. Ex : pile d'appels de fonctions, Ctrl+Z.
- File (queue)
- Structure FIFO : on enfile à l'arrière et on défile à l'avant. Ex : file d'attente d'impression, tampon réseau.
- Arbre binaire
- Structure hiérarchique : une racine, chaque nœud a au plus un fils gauche et un fils droit. Un arbre vide est noté None.
- Dictionnaire
- Collection de paires clé:valeur. Implémenté par table de hachage. Accès, insertion et suppression en O(1) en moyenne.
- Arbre binaire de recherche (ABR)
- Arbre binaire où pour tout nœud, les valeurs du sous-arbre gauche sont inférieures et celles du sous-arbre droit supérieures.
Formules
Classe Maillon (liste chaînée)
Condition : Base de l'implémentation d'une liste chaînée
Opérations de pile
Condition : En Python, on simule une pile avec une list
Classe Arbre binaire
Condition : Structure récursive : chaque fils est un Noeud ou None
Taille d'un arbre
Condition : Complexité O(n) — parcours complet de l'arbre
A retenir
- Pile = LIFO, File = FIFO : ne jamais confondre l'ordre d'accès.
- Un arbre binaire se manipule toujours récursivement : cas de base = arbre vide (None).
- Un dictionnaire Python {} est une table de hachage : les clés doivent être non mutables (str, int, tuple).
Erreurs classiques
Erreur : Confondre pile et file
Correction : Pile = LIFO (pile d'assiettes). File = FIFO (queue au cinéma). Retiens l'image concrète.
Erreur : Oublier le cas de base None dans les fonctions récursives sur les arbres
Correction : Toujours commencer par `if arbre is None: return ...` avant de traiter le cas récursif.
Erreur : Utiliser une liste mutable comme clé de dictionnaire
Correction : Les clés doivent être hashables : utilise un tuple au lieu d'une liste.
Astuce méthode
Au bac, quand tu implémentes une fonction sur un arbre, écris d'abord le cas de base (None), puis le cas récursif. Dessine l'arbre sur ton brouillon avec 3-4 nœuds pour vérifier ton code à la main.