Enregistrement d'un arbre binaire

Fermé
kary - 15 déc. 2004 à 15:47
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 - 20 déc. 2004 à 08:47
Bonjour s'il vous plait je voudrai savoir comment enregistrer un arbre binaire dans un fichier texte ou biniare en langage c et pouvoir reconstituer mon arbre binaire à partir des informations du fichier enfin d'obtenir l'arbre de départ? Merçi
A voir également:

3 réponses

blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
15 déc. 2004 à 18:40
salut
tu fais comme tu veux du moment que tu lis de la même manière que tu écris, et que tu connais le nombre d'éléments de ton arbre, où sinon
que tu peux détecter une fin de fichier correcte. (correspond au format demandé ou balise détectée)
C'est toi qui définit l'ordre où sont enregistré les éléments.
La seule difficulté est de trouver un algo qui parcours tous les éléments, et cela dépend de la méthode utilisée pour construire l'arbre.
Liste chainée ? tableau cartésien ? concaténation à l'aide de balises ?
cordialement
¤
0
Hello !

Evite de réinventer la roue !
Je te conseille de bien étudier les techniques classiques de "serialization/deserialization" (en anglais) de données.
Tu peux trouver une mine d'informations à cette adresse :

http://www.parashift.com/c++-faq-lite/serialization.html

Bonne lecture. ;)
0
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
20 déc. 2004 à 08:47
on peu facilement passer d'une structure d'arbre binaire à une structure de matrice
un arbre binaire est de la forme
1.1
2.1 2.1
3.1 3.2 3.3 3.4
4.1 4.2 4.3 4.3 4.4 4.5 4.6 4.7 4.8
pour définir un noeud il faut deux données sa profondeur et son ordre
ainsi le noeud 4.3 a 4 pour profondeur et 3 pour ordre
il suffit de trouver une correspondance dans un système array de base 1
ceci se fait avec quatre fonctions
une fonction adresse
fonction adresse(profondeur,ordre)
adresse=(2^(profondeur-1))-1+ordre
fin
une fonction pere te permet de trouver le pere
function pere(profondeur,ordre)
si rang est pair alors pere=((profondeur-1)+((rang/20)
sinon pere=((profondeur-1))+((rang+1)/20)
fin
une fonction premierfils(prondeur,ordre) te donnera le premier fils
premierfils=((rang+1)+(((ordre*2)-1)/10
fin
une fonction dernier fils(profondeur,ordre) te donnera le dernier fils
dernierfils=(rang+1)+(ordre*2/10)
fin
tu disposes ainsi d'un ensemble lineaire
apres à toi de voir
0