IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

avl supprimer


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Points : 93
    Points
    93
    Par défaut avl supprimer
    bonjour,
    je dois écrire un programme qui supprime un element dans un arbre binaire de recherche équilibré. Pour ce faire, j'ai accés au deséquilibre pour chaque noeud (en fait mes elements sont des couples <valeur,desequilibre>. Je dois faire ce travail itérativement, et je pense qu'il faille faire comme suit :
    Tout d'abord, descendre le long de l'arbre pour trouver l'endroit où est l'element e (on fait filsGauche si e<racine , filsDroit sinon) et en meme temps, on mémorise le dernier sous-arbre (a) de désequilibre nul (pour pouvoir faire des rotations à partir de là et ainsi équilibrer le reste de l'arbre). Ensuite, on supprime e en le remplaçant par le maximum de son filsGauche. Puis on part de a en on descend en mettant à jour les deséquilibres de chaque noeud par où l'on passe (+1 si e>racine, -1 sinon car on supprime un élement). dès qu'on a un desequilibre de + ou - 2, on fait des rotations adéquates (ke je ne détailleraient pas car je les ai et elles fonctionnent sur la fonction d'ajout...), et ceci jusqu'à ce que l'arbre a soit vide.

    ma question est de savoir si cet algo est correct.

    merci

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,
    de mémoire c'est ce que l'on ma enseigné durant mes cours.
    donc algo correcte.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Points : 93
    Points
    93
    Par défaut
    mon interrogation se porte surtout sur l'endroit que je dois mémoriser pour faire les mise à jour (rotations). Je pense qu'il faille sauver le dernier noeud de desequilibre nul mais est-ce que ça me garantit que je n'aurai pas besoin de propager les modifications plus haut ? Je rappelle que je fais des mises à jour en descendant(à gauche ou à droite en fonction de la valeur supprimée).

    merci

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    A priori, stocker le dernier noeud à déséquilibre nul ne me semble pas suffisant. En effet, la réorganisation d'un sous-arbre peut conduire à diminuer sa profondeur et à créer un déséquilibre avec son frére.

    Si ce raisonnement est vrai, il faudrait non seulement que le noueud stocké soit à déséquilibre nul, mais que tous ses parents soient aussi à déséquilibre nul.

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Rebonjour,

    Mon message peut sembler confus car j'ai raisonné sur l'équilibre des profondeurs et pas sur celle des poids. Mais il me semble que le raisonnement reste aussi valable pour les poids.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 228
    Points : 93
    Points
    93
    Par défaut
    merci,
    il me semblait aussi que ce ne soit pas suffisant ...

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16
  3. Supprimer la premiere ligne d'un fichier
    Par Kahiba dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2003, 10h18
  4. Supprimer un élément d'un tableau
    Par CaptainChoc dans le forum Langage
    Réponses: 15
    Dernier message: 23/12/2002, 23h14
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo