Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cours
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
algorithmique
cours
Commits
a3539480
Commit
a3539480
authored
1 month ago
by
paul.albuquer
Browse files
Options
Downloads
Patches
Plain Diff
Rephrased few things arbre => tree
parent
77e03ea2
No related branches found
No related tags found
No related merge requests found
Pipeline
#38369
passed
1 month ago
Stage: test
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
slides/cours_17.md
+68
-68
68 additions, 68 deletions
slides/cours_17.md
with
68 additions
and
68 deletions
slides/cours_17.md
+
68
−
68
View file @
a3539480
...
@@ -21,20 +21,20 @@ date: "2025-03-14"
...
@@ -21,20 +21,20 @@ date: "2025-03-14"
## Recherche du parent
## Recherche du parent
```
```
tre
e position(
arbr
e, clé)
arbr
e position(
tre
e, clé)
si est_non_vide(
arbr
e)
si est_non_vide(
tre
e)
si clé < clé(
arbr
e)
si clé < clé(
tre
e)
suivant = gauche(
arbr
e)
suivant = gauche(
tre
e)
sinon
sinon
suivant = droite(
arbr
e)
suivant = droite(
tre
e)
tant que clé(
arbr
e) != clé && est_non_vide(suivant)
tant que clé(
tre
e) != clé && est_non_vide(suivant)
arbr
e = suivant
tre
e = suivant
si clé < clé(
arbr
e)
si clé < clé(
tre
e)
suivant = gauche(
arbr
e)
suivant = gauche(
tre
e)
sinon
sinon
suivant = droite(
arbr
e)
suivant = droite(
tre
e)
retourne
arbre
retourne
suivant
```
```
# Pseudo-code d'insertion (2/4)
# Pseudo-code d'insertion (2/4)
...
@@ -46,14 +46,14 @@ tree position(arbre, clé)
...
@@ -46,14 +46,14 @@ tree position(arbre, clé)
## Ajout de l'enfant
## Ajout de l'enfant
```
```
rien ajout(
arbr
e, clé)
rien ajout(
tre
e, clé)
si est_vide(
arbr
e)
si est_vide(
tre
e)
arbr
e = nœud(clé)
tre
e = nœud(clé)
sinon
sinon
si clé < clé(
arbr
e)
si clé < clé(
tre
e)
gauche(
arbr
e) = nœud(clé)
gauche(
tre
e) = nœud(clé)
sinon si clé > clé(
arbr
e)
sinon si clé > clé(
tre
e)
droite(
arbr
e) = nœud(clé)
droite(
tre
e) = nœud(clé)
sinon
sinon
retourne
retourne
```
```
...
@@ -89,15 +89,15 @@ node *position(node *tree, key_t key) {
...
@@ -89,15 +89,15 @@ node *position(node *tree, key_t key) {
## Ajout du fils (pseudo-code)
## Ajout du fils (pseudo-code)
```
```
rien ajout(
arbr
e, clé)
rien ajout(
tre
e, clé)
si est_vide(
arbr
e)
si est_vide(
tre
e)
arbr
e = nœud(clé)
tre
e = nœud(clé)
sinon
sinon
arbr
e = position(
arbr
e, clé)
tre
e = position(
tre
e, clé)
si clé < clé(
arbr
e)
si clé < clé(
tre
e)
gauche(
arbr
e) = nœud(clé)
gauche(
tre
e) = nœud(clé)
sinon si clé > clé(
arbr
e)
sinon si clé > clé(
tre
e)
droite(
arbr
e) = nœud(clé)
droite(
tre
e) = nœud(clé)
sinon
sinon
retourne
retourne
```
```
...
@@ -242,21 +242,21 @@ flowchart TB;
...
@@ -242,21 +242,21 @@ flowchart TB;
## Pour une feuille ou absent (ensemble)
## Pour une feuille ou absent (ensemble)
```
```
tre
e suppression(
arbr
e, clé)
arbr
e suppression(
tre
e, clé)
s
ous_arbr
e = position(
arbr
e, clé)
s
ub_tre
e = position(
tre
e, clé)
si est_vide(s
ous_arbr
e) ou clé(s
ous_arbr
e) != clé
si est_vide(s
ub_tre
e) ou clé(s
ub_tre
e) != clé
retourne vide
retourne vide
sinon
sinon
si est_feuille(s
ous_arbr
e) et clé(s
ous_arbr
e) == clé
si est_feuille(s
ub_tre
e) et clé(s
ub_tre
e) == clé
nouvelle_feuille = parent(
arbre, sous_arbr
e)
nouvelle_feuille = parent(
tree, sub_tre
e)
si est_vide(nouvelle_feuille)
si est_vide(nouvelle_feuille)
arbre = vide
arbre = vide
sinon
sinon
si gauche(nouvelle_feuille) == s
ous_arb
re
si gauche(nouvelle_feuille) == s
ub_t
re
e
gauche(nouvelle_feuille) = vide
gauche(nouvelle_feuille) = vide
sinon
sinon
droite(nouvelle_feuille) = vide
droite(nouvelle_feuille) = vide
retourne s
ous_arb
re
retourne s
ub_t
re
e
```
```
# Il nous manque le code pour le `parent`
# Il nous manque le code pour le `parent`
...
@@ -266,11 +266,11 @@ tree suppression(arbre, clé)
...
@@ -266,11 +266,11 @@ tree suppression(arbre, clé)
. . .
. . .
```
```
tre
e parent(
arb
re, s
ous_arbr
e)
arbr
e parent(
t
re
e
, s
ub_tre
e)
si est_non_vide(
arbr
e)
si est_non_vide(
tre
e)
actuel =
arbr
e
actuel =
tre
e
parent = actuel
parent = actuel
clé = clé(s
ous_arbr
e)
clé = clé(s
ub_tre
e)
faire
faire
si (clé != clé(actuel))
si (clé != clé(actuel))
parent = actuel
parent = actuel
...
@@ -280,7 +280,7 @@ tree parent(arbre, sous_arbre)
...
@@ -280,7 +280,7 @@ tree parent(arbre, sous_arbre)
actuel = droite(actuel)
actuel = droite(actuel)
sinon
sinon
retour parent
retour parent
tant_que (actuel != s
ous_arbr
e)
tant_que (actuel != s
ub_tre
e)
retourne vide
retourne vide
```
```
...
@@ -293,21 +293,21 @@ tree parent(arbre, sous_arbre)
...
@@ -293,21 +293,21 @@ tree parent(arbre, sous_arbre)
. . .
. . .
```
```
tre
e suppression(
arbr
e, clé)
arbr
e suppression(
tre
e, clé)
s
ous_arbr
e = position(
arbr
e, clé)
s
ub_tre
e = position(
tre
e, clé)
si est_vide(gauche(s
ous_arbr
e)) ou est_vide(droite(s
ous_arbr
e))
si est_vide(gauche(s
ub_tre
e)) ou est_vide(droite(s
ub_tre
e))
parent = parent(
arbre, sous_arbr
e)
parent = parent(
tree, sub_tre
e)
si est_vide(gauche(s
ous_arbr
e))
si est_vide(gauche(s
ub_tre
e))
si droite(parent) == s
ous_arb
re
si droite(parent) == s
ub_t
re
e
droite(parent) = droite(s
ous_arbr
e)
droite(parent) = droite(s
ub_tre
e)
sinon
sinon
gauche(parent) = droite(s
ous_arbr
e)
gauche(parent) = droite(s
ub_tre
e)
sinon
sinon
si droite(parent) == s
ous_arb
re
si droite(parent) == s
ub_t
re
e
droite(parent) = gauche(s
ous_arbr
e)
droite(parent) = gauche(s
ub_tre
e)
sinon
sinon
gauche(parent) = gauche(s
ous_arbr
e)
gauche(parent) = gauche(s
ub_tre
e)
retourne s
ous_arb
re
retourne s
ub_t
re
e
```
```
...
@@ -318,12 +318,12 @@ tree suppression(arbre, clé)
...
@@ -318,12 +318,12 @@ tree suppression(arbre, clé)
## Pour au moins deux enfants (ensemble)
## Pour au moins deux enfants (ensemble)
```
```
tre
e suppression(
arbr
e, clé)
arbr
e suppression(
tre
e, clé)
s
ous_arbr
e = position(
arbr
e, clé) # on revérifie pas que c'est bien la clé
s
ub_tre
e = position(
tre
e, clé) # on
ne
revérifie pas que c'est bien la clé
si est_non_vide(gauche(s
ous_arbr
e)) et est_non_vide(droite(s
ous_arbr
e))
si est_non_vide(gauche(s
ub_tre
e)) et est_non_vide(droite(s
ub_tre
e))
max_gauche = position(gauche(s
ous_arbr
e), clé)
max_gauche = position(gauche(s
ub_tre
e), clé)
échange(clé(max_gauche), clé(s
ous_arbr
e))
échange(clé(max_gauche), clé(s
ub_tre
e))
suppression(gauche(s
ous_arbr
e), clé)
suppression(gauche(s
ub_tre
e), clé)
```
```
# Exercices (poster sur matrix)
# Exercices (poster sur matrix)
...
@@ -333,15 +333,15 @@ tree suppression(arbre, clé)
...
@@ -333,15 +333,15 @@ tree suppression(arbre, clé)
. . .
. . .
```
```
tre
e insertion(
arbr
e, clé)
arbr
e insertion(
tre
e, clé)
si est_vide(
arbr
e)
si est_vide(
tre
e)
retourne nœud(clé)
retourne nœud(clé)
si (clé <
arbre->
clé)
si (clé <
tree(
clé)
)
gauche(
arbr
e) = insert(gauche(
arbr
e), clé)
gauche(
tre
e) = insert(gauche(
tre
e), clé)
sinon
sinon
droite(
arbr
e) = insert(droite(
arbr
e), clé)
droite(
tre
e) = insert(droite(
tre
e), clé)
retourne
arbr
e
retourne
tre
e
```
```
# Exercices (poster sur matrix)
# Exercices (poster sur matrix)
...
@@ -351,15 +351,15 @@ tree insertion(arbre, clé)
...
@@ -351,15 +351,15 @@ tree insertion(arbre, clé)
. . .
. . .
```
```
booléen recherche(
arbr
e, clé)
booléen recherche(
tre
e, clé)
si est_vide(
arbr
e)
si est_vide(
tre
e)
retourne faux // pas trouvée
retourne faux // pas trouvée
si clé(
arbr
e) == clé
si clé(
tre
e) == clé
retourne vrai // trouvée
retourne vrai // trouvée
si clé < clé(
arbr
e)
si clé < clé(
tre
e)
retourne recherche(gauche(
arbr
e), clé)
retourne recherche(gauche(
tre
e), clé)
sinon
sinon
retourne recherche(droite(
arbr
e), clé)
retourne recherche(droite(
tre
e), clé)
```
```
# Exercices (à la maison)
# Exercices (à la maison)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment