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

added pseudo code for insert.

parent 126d9c93
No related branches found
No related tags found
No related merge requests found
Pipeline #15688 passed
......@@ -824,11 +824,91 @@ int arbre_size(tree_t tree) {
if (NULL == tree) {
return 0;
} else {
return 1 + tree_size(tree->left) + tree_size(tree->right);
return 1 + tree_size(tree->left)
+ tree_size(tree->right);
}
}
```
# L'insertion dans un arbre binaire
* C'est bien joli de pouvoir faire des parcours, recherches, mais si on peut
pas construire l'arbre....
## Pour un arbre lexicographique
* Rechercher la position dans l'arbre où insérer.
* Créer un noeud avec la clé et le rattacher à l'arbre.
# Exemple d'insertions
* Clés uniques pour simplifier.
* Insertion de 5, 15, 10, 25, 2, -5, 12, 14, 11.
* Rappel:
* Plus petit que la clé courante => gauche,
* Plus grand que la clé courante => droite.
* Faisons le dessins ensemble
```
```
## Exercice (3min, puis matrix)
* Dessiner l'arbre en insérant 20, 30, 60, 40, 10, 15, 25, -5
# Pseudocode d'insertion (1/2)
* Deux parties:
* Recherche de la position.
* Ajout dans l'arbre.
## Recherche de la position
```
arbre position(arbre, clé)
si est_non_vide(arbre)
si clé < clé(arbre)
suivant = gauche(arbre)
sinon
suivant = droite(arbre)
tant que clé(arbre) != clé && est_non_vide(sivant)
arbre = suivant
returne arbre
```
# Pseudocode d'insertion (2/2)
* Deux parties:
* Recherche de la position.
* Ajout dans l'arbre.
## Ajout dans l'arbre
```
ajout(arbre, clé)
si clé < clé(arbre)
gauche(arbre) = noeud(clé)
sinon si clé > clé(arbre)
droite(arbre) = noeud(clé)
sinon
retourne
```
# Code d'insertion en C (1/2)
## Recherche de la position
[^1]: Copyright cours de mathématiques pendant trop d'années.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment