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