diff --git a/slides/cours_17.md b/slides/cours_17.md index d48198fc33f8dbfdfb5ff2b555e469cb85a67ad9..0822f9758b49223991e61b112b40b9d6ac2a4ba9 100644 --- a/slides/cours_17.md +++ b/slides/cours_17.md @@ -239,24 +239,22 @@ flowchart TB; # Le pseudo-code de la suppression -## Pour une feuille ou absent (ensemble) +## Pour une feuille ou clé absente (ensemble) ``` -arbre suppression(tree, clé) - sub_tree = position(tree, clé) - si est_vide(sub_tree) ou clé(sub_tree) != clé - retourne vide - sinon - si est_feuille(sub_tree) et clé(sub_tree) == clé - nouvelle_feuille = parent(tree, sub_tree) - si est_vide(nouvelle_feuille) - arbre = vide - sinon - si gauche(nouvelle_feuille) == sub_tree - gauche(nouvelle_feuille) = vide - sinon - droite(nouvelle_feuille) = vide - retourne sub_tree +booléen suppression(tree, clé) + noeud = position(tree, clé) + si est_vide(noeud) ou clé(noeud) != clé + retourne faux + si est_feuille(noeud) + noeud_parent = parent(tree, noeud) + si est_vide(noeud_parent) + noeud = vide + sinon si gauche(noeud_parent) == noeud + gauche(noeud_parent) = vide + sinon si droite(noeud_parent) == noeud + droite(noeud_parent) = vide + retourne vrai ``` # Il nous manque le code pour le `parent` @@ -266,11 +264,11 @@ arbre suppression(tree, clé) . . . ``` -arbre parent(tree, sub_tree) +arbre parent(tree, noeud) si est_non_vide(tree) actuel = tree parent = actuel - clé = clé(sub_tree) + clé = clé(noeud) faire si (clé != clé(actuel)) parent = actuel @@ -279,8 +277,8 @@ arbre parent(tree, sub_tree) sinon actuel = droite(actuel) sinon - retour parent - tant_que (actuel != sub_tree) + retourne parent + tant_que (actuel != noeud) retourne vide ```