From cebde3ff94a0fd75e83569a8ed4351e7396a774c Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Mon, 18 Mar 2024 17:50:29 +0100 Subject: [PATCH] rappel --- slides/cours_18.md | 113 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/slides/cours_18.md b/slides/cours_18.md index 0b223c0..823c711 100644 --- a/slides/cours_18.md +++ b/slides/cours_18.md @@ -3,6 +3,119 @@ title: "Arbres et tas" date: "2024-03-19" --- +# Rappel: L'insertion + +``` +rien ajout(arbre, clé) + si est_vide(arbre) + arbre = nœud(clé) + sinon + arbre = position(arbre, clé) + si clé < clé(arbre) + gauche(arbre) = nœud(clé) + sinon si clé > clé(arbre) + droite(arbre) = nœud(clé) + sinon + retourne +``` + +# La suppression de clé + +::: columns + +:::: column + +## Cas simples: + +* le nœud est absent, +* le nœud est une feuille +* le nœuds a un seul fils. + +## Une feuille (le 19 p.ex.). + +```{.mermaid format=pdf width=150 loc=figs/} +flowchart TB; + 10-->20; + 10-->5 + 20-->21 + 20-->19 +``` + +:::: + +:::: column + +## Un seul fils (le 20 p.ex.). + +```{.mermaid format=pdf width=400 loc=figs/} +flowchart TB; + 10-->20; + 10-->5 + 20-->25 + 20-->18 + 25-->24 + 25-->30 + 5-->4; + 5-->8; + style 18 fill:#fff,stroke:#fff,color:#fff +``` + +## Dans tous les cas + +* Chercher le nœud à supprimer: utiliser `position()`. + +:::: + +::: + +# La suppression de clé + + +::: columns + +:::: column + +## Cas compliqué + +* Le nœud à supprimer à (au moins) deux descendants (10). + +```{.mermaid format=pdf width=400 loc=figs/} +flowchart TB; + 10-->20; + 10-->5 + 20-->25 + 20-->18 + 25-->24 + 25-->30 + 5-->4; + 5-->8; +``` + +:::: + +:::: column + +* Si on enlève 10 il se passe quoi? + +. . . + +* On peut pas juste enlever `10` et recoller... +* Proposez une solution bon sang! + +. . . + +## Solution + +* Échange de la valeur à droite dans le sous-arbre de gauche ou + ... +* de la valeur de gauche dans le sous-arbre de droite! +* Puis, on retire le nœud. + +:::: + +::: + + # Le pseudo-code de la suppression ## Pour une feuille ou absent (ensemble) -- GitLab