diff --git a/slides/cours_17.md b/slides/cours_17.md index 0822f9758b49223991e61b112b40b9d6ac2a4ba9..1b829866c1259172c5e4e2d51fafa227cd8702a4 100644 --- a/slides/cours_17.md +++ b/slides/cours_17.md @@ -286,42 +286,47 @@ arbre parent(tree, noeud) \footnotesize -## Pour un seul enfant (5min -> matrix) +## S'il y a un enfant à gauche (5min -> matrix) . . . ``` -arbre suppression(tree, clé) - sub_tree = position(tree, clé) - si est_vide(gauche(sub_tree)) ou est_vide(droite(sub_tree)) - parent = parent(tree, sub_tree) - si est_vide(gauche(sub_tree)) - si droite(parent) == sub_tree - droite(parent) = droite(sub_tree) - sinon - gauche(parent) = droite(sub_tree) - sinon - si droite(parent) == sub_tree - droite(parent) = gauche(sub_tree) - sinon - gauche(parent) = gauche(sub_tree) - retourne sub_tree +booléen suppression(tree, clé) + noeud = position(tree, clé) + subtree = position(gauche(noeud), clé) + val_proche = clé(subtree) + si est_vide(droite(gauche(noeud)) + gauche(noeud) = gauche(subtree) + sinon + suppression(tree, val_proche) + clé(noeud) = val_proche + retourne vrai ``` -# Le pseudo-code de la suppression +# Le pseudo-code de la suppression \footnotesize -## Pour au moins deux enfants (ensemble) +## Bilan (ensemble) ``` -arbre suppression(tree, clé) - sub_tree = position(tree, clé) # on ne revérifie pas que c'est bien la clé - si est_non_vide(gauche(sub_tree)) et est_non_vide(droite(sub_tree)) - max_gauche = position(gauche(sub_tree), clé) - échange(clé(max_gauche), clé(sub_tree)) - suppression(gauche(sub_tree), clé) +bool suppression(tree, clé) + noeud = position(tree, clé) # on ne revérifie pas que c'est bien la clé + si est_vide(noeud) ou clé(noeud) != clé + retourne faux + si est_feuille(noeud)) + noeud_parent = parent(tree, noeud) + ... + retourne vrai + si est_non_vide(gauche(noeud)) + subtree = position(gauche(noeud), clé) + ... + retourne vrai + si est_non_vide(gauche(noeud)) + subtree = position(droite(noeud), clé) + ... + retourne vrai ``` # Exercices (poster sur matrix) @@ -362,8 +367,7 @@ booléen recherche(tree, clé) # Exercices (à la maison) -3. Écrire une fonction qui insère des mots dans un arbre et ensuite affiche - l'arbre. +3. Écrire une fonction qui insère des mots dans un arbre et ensuite affiche l'arbre. # Trier un tableau à l'aide d'un arbre binaire