diff --git a/slides/cours_16.md b/slides/cours_16.md index 7b275ec02886c3f060189592d085597b342f00f4..c2268a7ede5004bf785aeda6c9e8612998adb7cc 100644 --- a/slides/cours_16.md +++ b/slides/cours_16.md @@ -13,13 +13,13 @@ date: "2023-03-17" -# Pseudocode d'insertion (1/2) +# L'insertion (1/4) * Deux parties: * Recherche le parent où se passe l'insertion. * Ajout du fils dans l'arbre. -## Recherche du parent +## Recherche du parent (pseudo-code) ``` arbre position(arbre, clé) @@ -38,16 +38,38 @@ arbre position(arbre, clé) retourne arbre ``` -# Pseudo-code d'insertion (2/2) +# L'insertion (2/4) + +## Recherche du parent (code) + +. . . + +```C +tree_t position(tree_t tree, key_t key) { + tree_t curr = tree; + if (NULL != curr) { + tree_t subtree = + key > curr->key ? curr->right : curr->left; + while (key != curr->key && NULL != subtree) { + curr = subtree; + subtree = key > curr->key ? curr->right : + curr->left; + } + } + return curr; +} +``` + +# L'insertion (3/4) * Deux parties: * Recherche de la position. * Ajout dans l'arbre. -## Ajout du fils +## Ajout du fils (pseudo-code) ``` -ajout(arbre, clé) +rien ajout(arbre, clé) si est_vide(arbre) arbre = nœud(clé) sinon @@ -60,31 +82,11 @@ ajout(arbre, clé) retourne ``` -# Code d'insertion en C (1/2) - -## Recherche du parent (ensemble) -. . . -```C -tree_t position(tree_t tree, key_t key) { - tree_t current = tree; - if (NULL != current) { - tree_t subtree = - key > current->key ? current->right : current->left; - while (key != current->key && NULL != subtree) { - current = subtree; - subtree = key > current->key ? current->right : - current->left; - } - } - return current; -} -``` - -# Code d'insertion en C (2/2) +# L'insertion (4/4) -## Ajout du fils (ensemble) +## Ajout du fils (code) \scriptsize @@ -115,7 +117,7 @@ tree_t add_key(tree_t *tree, key_t key) { } ``` -# La version PK (1/N) +# La version PK (1/5) ```C typedef struct _node { @@ -135,7 +137,7 @@ void parcours_infixe(tree arbre, int n){ } ``` -# La version PK (2/N) +# La version PK (2/5) ```C tree recherche(int cle, tree arbre){ @@ -152,7 +154,7 @@ tree recherche(int cle, tree arbre){ ``` -# La version PK (3/N) +# La version PK (3/5) \footnotesize @@ -179,7 +181,7 @@ node* parent_insertion(int donnee, tree arbre){ ``` -# La version PK (4/N) +# La version PK (4/5) \footnotesize @@ -206,7 +208,7 @@ tree insertion(int donnee, tree arbre){ } ``` -# La version PK (5/N) +# La version PK (5/5) ```C int main(){ @@ -219,7 +221,7 @@ int main(){ arbre = insertion(5, arbre); parcours_infixe(arbre, 0); -}s +} ``` # La suppression de clé @@ -300,6 +302,9 @@ flowchart TB; :::: column * Si on enlève 10 il se passe quoi? + +. . . + * On peut pas juste enlever `10` et recoller... * Proposez une solution bon sang!