Skip to content
Snippets Groups Projects
Verified Commit 2815c418 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

some minor corrections

parent c58817fb
Branches
No related tags found
No related merge requests found
...@@ -13,13 +13,13 @@ date: "2023-03-17" ...@@ -13,13 +13,13 @@ date: "2023-03-17"
# Pseudocode d'insertion (1/2) # L'insertion (1/4)
* Deux parties: * Deux parties:
* Recherche le parent où se passe l'insertion. * Recherche le parent où se passe l'insertion.
* Ajout du fils dans l'arbre. * Ajout du fils dans l'arbre.
## Recherche du parent ## Recherche du parent (pseudo-code)
``` ```
arbre position(arbre, clé) arbre position(arbre, clé)
...@@ -38,16 +38,38 @@ arbre position(arbre, clé) ...@@ -38,16 +38,38 @@ arbre position(arbre, clé)
retourne arbre 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: * Deux parties:
* Recherche de la position. * Recherche de la position.
* Ajout dans l'arbre. * Ajout dans l'arbre.
## Ajout du fils ## Ajout du fils (pseudo-code)
``` ```
ajout(arbre, clé) rien ajout(arbre, clé)
si est_vide(arbre) si est_vide(arbre)
arbre = nœud(clé) arbre = nœud(clé)
sinon sinon
...@@ -60,31 +82,11 @@ ajout(arbre, clé) ...@@ -60,31 +82,11 @@ ajout(arbre, clé)
retourne retourne
``` ```
# Code d'insertion en C (1/2)
## Recherche du parent (ensemble)
. . .
```C # L'insertion (4/4)
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)
## Ajout du fils (ensemble) ## Ajout du fils (code)
\scriptsize \scriptsize
...@@ -115,7 +117,7 @@ tree_t add_key(tree_t *tree, key_t key) { ...@@ -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 ```C
typedef struct _node { typedef struct _node {
...@@ -135,7 +137,7 @@ void parcours_infixe(tree arbre, int n){ ...@@ -135,7 +137,7 @@ void parcours_infixe(tree arbre, int n){
} }
``` ```
# La version PK (2/N) # La version PK (2/5)
```C ```C
tree recherche(int cle, tree arbre){ tree recherche(int cle, tree arbre){
...@@ -152,7 +154,7 @@ 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 \footnotesize
...@@ -179,7 +181,7 @@ node* parent_insertion(int donnee, tree arbre){ ...@@ -179,7 +181,7 @@ node* parent_insertion(int donnee, tree arbre){
``` ```
# La version PK (4/N) # La version PK (4/5)
\footnotesize \footnotesize
...@@ -206,7 +208,7 @@ tree insertion(int donnee, tree arbre){ ...@@ -206,7 +208,7 @@ tree insertion(int donnee, tree arbre){
} }
``` ```
# La version PK (5/N) # La version PK (5/5)
```C ```C
int main(){ int main(){
...@@ -219,7 +221,7 @@ int main(){ ...@@ -219,7 +221,7 @@ int main(){
arbre = insertion(5, arbre); arbre = insertion(5, arbre);
parcours_infixe(arbre, 0); parcours_infixe(arbre, 0);
}s }
``` ```
# La suppression de clé # La suppression de clé
...@@ -300,6 +302,9 @@ flowchart TB; ...@@ -300,6 +302,9 @@ flowchart TB;
:::: column :::: column
* Si on enlève 10 il se passe quoi? * Si on enlève 10 il se passe quoi?
. . .
* On peut pas juste enlever `10` et recoller... * On peut pas juste enlever `10` et recoller...
* Proposez une solution bon sang! * Proposez une solution bon sang!
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment