diff --git a/slides/cours_15.md b/slides/cours_15.md index 66bcab46184ccd0275e4f233089cf4adf0c412c4..f72adb1a94929a279876bb2bf52ad8fe13da2ccb 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,12 +877,17 @@ 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 ``` @@ -917,10 +922,12 @@ ajout(arbre, clé) tree_t position(tree_t tree, key_t key) { tree_t current = tree; if (NULL != current) { + 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;