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 :
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.
Partager