Probleme sur les AVL

Probleme sur les AVL - C++ - Programmation

Marsh Posté le 15-05-2003 à 00:34:05    

Vous savez, ces arbres binaires équilibrés. Je me pose une question sur l'équilibrage.
Prenons un cas pratique:
 
nous avons l'arbre suivant:


      8
     / \
    3   9
   / \   \
  2   5   10
 /   / \
1   4   6


 
On veut y ajouter l'element 7, ce qui déséquilibre notre arbre:


      8
     / \
    3   9
   / \   \
  2   5   10
 /   / \
1   4   6
         \
          7


 
C'est le noeud 8 qui est déséquilibré, et le dernier noeud ajouté est le 7. On a donc un problème gauche-droite. Selon l'algo que j'ai fait, on obtient cet arbre:


      5
     /  \
    3     8
   / \   / \
  2   4 6   9
 /       \   \
1         7  10


 
Cet arbre me parait correctement équilibré, seulement ma prof obtient un arbre legerement différent, puisqu'elle inverse les noeuds 6 et 7, elle place 7 en fils gauche de 8 et 6 en fils gauche de 7. D'une part ça me parait plus compliqué, d'autre part les arbres obtenus sont quasi-identiques, je me demandais donc si mon algo est valable puisque j'obtiens un résultat différent.
 
Pour ceux que ça tente, voici mon algo vite fait:
on a racine étant le noeud avec un facteur de balance déséquilibré.

Code :
  1. temp=racine
  2. racine.sag=temp.sg.sad
  3. temp.sag.sad=racine.sag
  4. temp.sag=racine.sad
  5. racine.sag=temp.sag
  6. racine.sad=temp


 
(rho le paté !)


---------------
©2008 Bleuarff Corp.
Reply

Marsh Posté le 15-05-2003 à 00:34:05   

Reply

Marsh Posté le 15-05-2003 à 12:45:38    

Jvois que ya des spécialistes des arbres AVL ici :/


---------------
©2008 Bleuarff Corp.
Reply

Marsh Posté le 15-05-2003 à 18:54:28    

ben ton arbre est équilibré alors oui ton algo est bon

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed