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
3218dceb
Commit
3218dceb
authored
4 weeks ago
by
paul.albuquer
Browse files
Options
Downloads
Patches
Plain Diff
Corrected typos
parent
dd1beedb
No related branches found
No related tags found
No related merge requests found
Pipeline
#38218
passed
4 weeks ago
Stage: test
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
slides/cours_16.md
+23
-24
23 additions, 24 deletions
slides/cours_16.md
with
23 additions
and
24 deletions
slides/cours_16.md
+
23
−
24
View file @
3218dceb
...
...
@@ -427,10 +427,10 @@ sous-arbres de gauche et de droite.
## Exemple: les arbres lexicographiques
*
Chaque nœud contient une information de type ordonné, la
**clé**
,
*
Chaque nœud contient une information de type ordonné, la
**clé**
.
*
Par construction, pour chaque nœud $N$:
*
Toute
s
clé du sous-arbre à gauche de $N$ s
on
t inférieur
s
à la clé de $N$.
*
Toute
s
clé du sous-arbre à droite de $N$ s
on
t inférieur
s
à la clé de $N$.
*
Toute clé du sous-arbre à gauche de $N$
e
st inférieur
e
à la clé de $N$.
*
Toute clé du sous-arbre à droite de $N$
e
st inférieur
e
à la clé de $N$.
# Algorithme de recherche
...
...
@@ -438,7 +438,7 @@ sous-arbres de gauche et de droite.
```
python
arbre
recherche
(
clé
,
arbre
)
tant
e
_que
est_non_vide
(
arbre
)
tant_que
est_non_vide
(
arbre
)
si
clé
<
clé
(
arbre
)
arbre
=
gauche
(
arbre
)
sinon
si
clé
>
clé
(
arbre
)
...
...
@@ -464,10 +464,10 @@ typedef struct _node {
node *search(key_t key, node *tree) {
node *current = tree;
while (NULL != current) {
if (current->key >
X
) {
current = current->
gauche
;
} else if (current->key <
X
){
current = current->
droite
;
if (current->key >
key
) {
current = current->
left
;
} else if (current->key <
key
){
current = current->
right
;
} else {
return current;
}
...
...
@@ -493,7 +493,7 @@ additionné au nombre de nœuds dans le sous-arbre de droite.
. . .
```
C
int
arbr
e_size(node *tree) {
int
tre
e_size(node *tree) {
if (NULL == tree) {
return 0;
} else {
...
...
@@ -505,7 +505,7 @@ int arbre_size(node *tree) {
# L'insertion dans un arbre binaire
*
C'est bien joli de pouvoir faire des parcours, recherches, mais si on peut
*
C'est bien joli de pouvoir faire des parcours, recherches, mais si on
ne
peut
pas construire l'arbre....
## Pour un arbre lexicographique
...
...
@@ -594,12 +594,12 @@ ajout(arbre, clé)
node *position(node *tree, key_t key) {
node * current = tree;
if (NULL != current) {
node *subtree = key > current->key
? current->right :
current->left;
node *subtree = key > current->key
? current->right :
current->left;
while (key != current->key && NULL != subtree) {
current = subtree;
subtree = key > current->key
? current->right :
current->left;
subtree = key > current->key
? current->right :
current->left;
}
}
return current;
...
...
@@ -672,7 +672,7 @@ node *add_key(node **tree, key_t key) {
## Cas simples:
*
le nœud est absent,
*
le nœud est une feuille
*
le nœud est une feuille
,
*
le nœuds a un seul fils.
## Une feuille (le 19 p.ex.).
...
...
@@ -721,7 +721,7 @@ flowchart TB;
## Cas compliqué
*
Le nœud à supprimer
à
(au moins) deux descendants (10).
*
Le nœud à supprimer
a
(au moins) deux descendants (10).
```
{.mermaid format=pdf width=400 loc=figs/}
flowchart TB;
...
...
@@ -739,19 +739,18 @@ flowchart TB;
:::: 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...
*
Proposez une solution
bon sang
!
*
On
ne
peut pas juste enlever
`10`
et recoller...
*
Proposez une solution !
. . .
## Solution
*
Échange de la valeur à droite dans le sous-arbre de gauche ou
...
*
Échange de la valeur à droite dans le sous-arbre de gauche ou ...
*
de la valeur de gauche dans le sous-arbre de droite!
*
Puis, on retire le nœud.
...
...
@@ -760,7 +759,7 @@ flowchart TB;
:::
# Le pseudo-code
de la suppression
# Le pseudo-code de la suppression
## Pour une feuille ou absent (ensemble)
...
...
@@ -807,7 +806,7 @@ arbre parent(arbre, sous_arbre)
retourne vide
```
# Le pseudo-code
de la suppression
# Le pseudo-code de la suppression
\f
ootnotesize
...
...
@@ -826,7 +825,7 @@ arbre suppression(arbre, clé)
sinon
gauche(parent) = droite(sous_arbre)
sinon
si droite(parent) == sous_arbre
ou est_
si droite(parent) == sous_arbre
droite(parent) = gauche(sous_arbre)
sinon
gauche(parent) = gauche(sous_arbre)
...
...
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