diff --git a/slides/cours_15.md b/slides/cours_15.md index d463f69caa958433c0397715c90aac9ad9668e65..0cfc64d1aa2ac6ccfc708f19f6a4f889c3d418cc 100644 --- a/slides/cours_15.md +++ b/slides/cours_15.md @@ -790,7 +790,7 @@ typedef struct _node { typedef node* tree_t; tree_t search(key_t key, tree_t tree) { tree_t current = tree; - while (NULL != current && !success) { + while (NULL != current) { if (current->key > X) { current = current->gauche; } else if (current->key < X){ @@ -877,13 +877,18 @@ int arbre_size(tree_t tree) { ``` 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(suivant) + arbre = suivant si clé < clé(arbre) suivant = gauche(arbre) sinon suivant = droite(arbre) - arbre = suivant - returne arbre + + retourne arbre ``` # Pseudocode d'insertion (2/2) @@ -917,10 +922,12 @@ ajout(arbre, clé) tree_t position(tree_t tree, key_t key) { tree_t current = tree; if (NULL != current) { + tree_t subtree = key > current->key ? current->right : + current->left; while (key != current->key && NULL != subtree) { + current = subtree; subtree = key > current->key ? current->right : current->left; - current = subtree; } } return current;