Bonjour à tous,

Je développe en Access VBA et je bute sur la difficulté algorithmique suivante. A partir d'une base de données je construis un arbre à l'aide de deux modules de classe:

Classe Sommet:
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Compare Database
Option Explicit
Option Base 1
 
Public lngIDSommet As Long
Public intRank As Integer
Public lngIDPere As Long, colFils As New Collection
 
Property Let SetColFils(objNode As Sommet)
 colFils.Add objNode
End Property
 
Private Sub Class_Terminate()
 Set colFils = Nothing
End Sub

Classe Graphe :
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Option Compare Database
Option Explicit
Option Base 1
 
Public colSommet As New Collection
Public dicSommet As New Dictionary 'Collections des identifiants des sommets
 
Private Sub Class_Terminate()
 dicSommet.RemoveAll
 Set colSommet = Nothing: Set dicSommet = Nothing
End Sub

Comme j'ai par ailleurs une relation de chronologie entre les feuilles de l'arbre, j'ai un traitement qui numérote celles-ci. Je stocke ce numéro dans la variable intRank des sommets de type feuille.

Grâce à un parcours en largeur d'abord je peux numéroter les sommets de l'arbre de manière lexicographique (comme les n° de paragraphes en Word). Le pb c'est que je voudrais que cette numérotation respecte l'ordre des feuilles terminales comme le montrent les deux schémas suivants :

Nom : Arbre1.JPG
Affichages : 215
Taille : 26,9 KoNom : Arbre2.JPG
Affichages : 209
Taille : 28,0 Ko

Bref cela revient à actualiser le n° lexicographique en fonction de l'ordre qu'on veut (comme dans le mode Plan de Word).

Si quelqu'un peut me suggérer une piste, cela me rendrait un grand service.

Merci d'avance pour votre aide.