From 15a7c1e8a2fb1954e3510d5a6c9699c8b6075c01 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Mon, 21 Feb 2022 01:06:15 +0100
Subject: [PATCH] added pseudo code for insert.

---
 slides/cours_15.md | 82 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 81 insertions(+), 1 deletion(-)

diff --git a/slides/cours_15.md b/slides/cours_15.md
index cbd291e..8d8183b 100644
--- a/slides/cours_15.md
+++ b/slides/cours_15.md
@@ -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.
-- 
GitLab