Bonjour,
J'ai cherché sans succès la meilleure façon d'enregistrer un ABR (arbre binaire de recherche) dans un fichier binaire.
Merci de votre aide.
Ps: C'est un peu succinct mais je ne vois pas quoi ajouter... :)
Version imprimable
Bonjour,
J'ai cherché sans succès la meilleure façon d'enregistrer un ABR (arbre binaire de recherche) dans un fichier binaire.
Merci de votre aide.
Ps: C'est un peu succinct mais je ne vois pas quoi ajouter... :)
ça dépend sous quelle forme tu espères le recharger.
Si tu veux conserver la structure originelle de l'arbre, il te faudra stocker plus d'infos que si tu veux le recharger en tant que liste/tableau trié.
Dans ce cas, je conseille un enregistrement récursif, et de la même manière que j'enregistrerais un arbre N-aire: Contenu du noeud, nombre d'enfants direct, enfants.
Ce qui ferait:
- En-tête du fichier: Nombre magique de 4 octets.
- Pour chaque noeud:
- Longueur du nom: 2 ou 4 octets.
- Nom (sans caractère nul terminal, sans contraintes d'alignement)
- Valeur
- Nombre de fils: 2 ou 4 octets. Vaut zéro pour les feuilles.
- Immédiatement suivi de son premier fils.
Ainsi, un tel arbre:
Serait sauvegardé ainsi:Code:
1
2
3
4
5 D / \ B E / \ \ A C F
(D, 2fils) (B, 2fils) (A, 0fils) (C, 0fils) (E, 1fils) (F, 0fils)
Et pourra être lu de manière récursive, comme il a été sauvegardé.
Edit: Note que quand un noeud n'a qu'un seul fils, il va falloir comparer pour savoir de quel côté il va. Peut-être un format spécial pour arbre binaires de recherche serait mieux (genre, avec une info qui indiquerait fils gauche ou fils droit)
C'est sans doute une bonne idée.