Structures de données
L'essentiel en 30 secondes
Les notions à connaître
- 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 en tête en .
- Pile (stack)
- Structure LIFO (Last In, First Out) : on empile (push) et on dépile (pop) uniquement par le sommet. Ex : pile d'appels de fonctions, Ctrl+Z, évaluation d'expressions postfixées.
- File (queue)
- Structure FIFO (First In, First Out) : on enfile à l'arrière et on défile à l'avant. Ex : file d'attente d'impression, tampon réseau, parcours en largeur (BFS).
- Arbre binaire
- Structure hiérarchique récursive : une racine, chaque nœud a au plus un fils gauche et un fils droit. Un arbre vide est noté None. La hauteur d'un arbre de n nœuds est au minimum .
- Dictionnaire (table de hachage)
- Collection de paires clé:valeur. Implémenté par table de hachage en Python. Accès, insertion et suppression en en moyenne, dans le pire cas (collisions).
- Arbre binaire de recherche (ABR)
- Arbre binaire où pour tout nœud N, toutes les valeurs du sous-arbre gauche < N < toutes les valeurs du sous-arbre droit. Recherche en où h est la hauteur.
- Hauteur d'un arbre
- Nombre d'arêtes du plus long chemin de la racine à une feuille. Un arbre vide a une hauteur de -1 (convention) ou 0 selon la convention. Une feuille a une hauteur de 0.
- Parcours d'arbre
- 3 parcours en profondeur (DFS) : préfixe (Racine-G-D), infixe (G-Racine-D), suffixe (G-D-Racine). 1 parcours en largeur (BFS) : niveau par niveau.
Les erreurs à éviter en nsi
Confondre pile et file
Pile = LIFO (pile d'assiettes). File = FIFO (queue au cinéma). Retiens l'image concrète.
Oublier le cas de base None dans les fonctions récursives sur les arbres
Toujours commencer par if arbre is None: return ... avant de traiter le cas récursif.
Utiliser une liste mutable comme clé de dictionnaire
Les clés doivent être hashables : utilise un tuple au lieu d'une liste.
Utiliser list.pop(0) pour une file
pop(0) est en car il décale tous les éléments. Utilise collections.deque et popleft() en .
Confondre parcours préfixe, infixe et suffixe
Préfixe = Racine-G-D, Infixe = G-Racine-D, Suffixe = G-D-Racine. Le nom indique quand on traite la Racine.
Sais-tu répondre à ces questions ?
Les corrigés détaillés sont dans le quiz du chapitre.
- Dans une pile (stack), quelle opération permet de retirer le dernier élément ajouté ?
- Quelle structure de données fonctionne selon le principe FIFO (First In, First Out) ?
- Dans un dictionnaire Python, quelle est la complexité moyenne d'un accès par clé ?
- On considère la classe suivante : class Maillon: def __init__(self, valeur, : self.valeur valeur self.suivant suivant liste Que vaut liste.suivant.valeur ?
- On exécute les opérations suivantes sur une pile initialement vide : pile = [] pile.append(5) pile.append(8) pile.append(2) pile.pop() pile.append(9) Quel est le sommet de la pile ?
Accède à la fiche complète
Crée ton compte gratuit pour lire la fiche en entier et accéder à 7 000+ contenus de révision.