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...![]()
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é.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
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 X : Sélectionner tout - Visualiser dans une fenêtre à part
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)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
C'est sans doute une bonne idée.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager