A voir également:
- Arbre généalogique
- Arbre généalogique famille michelin - Télécharger - Généalogie
- Arbre genealogique windsor - Télécharger - Généalogie
- L'arbre Généalogique de la famille - Télécharger - Généalogie
- Legacy Family Tree - Télécharger - Généalogie
- Glandier arbre ✓ - Forum Photoshop
2 réponses
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
17 juil. 2013 à 18:26
17 juil. 2013 à 18:26
Bonjour,
Vu la structure, tu n'auras pas d'autre choix que de parcourir tout l'arbre en cherchant le nom du fils dans premierFils ou FilsProche... Soit dit en passant, un tableau ou une liste serait plus approprié que 1 ou 2 fils puisqu'il peut en avoir 3 par exemple ;)
Pour retrouver facilement les parents, pas d'autre choix, selon moi, que d'ajouter des attributs portant sur les parents ;)
Vu la structure, tu n'auras pas d'autre choix que de parcourir tout l'arbre en cherchant le nom du fils dans premierFils ou FilsProche... Soit dit en passant, un tableau ou une liste serait plus approprié que 1 ou 2 fils puisqu'il peut en avoir 3 par exemple ;)
Pour retrouver facilement les parents, pas d'autre choix, selon moi, que d'ajouter des attributs portant sur les parents ;)
voila le code:
arbre pere(arbre A,int x)
{
arbre tmp,p;
if(A==NULL)
return NULL;
if(A->pf!=NULL) //pf c'est le premier fils
{
tmp= A;
p=tmp->pf;
while((p!=NULL)&&(p->age!=x))
{
p=p->fp; //fp c'est le fils proche autrement le frère de premier fils
}
if(p!=NULL)
return tmp; // ici on retourne le père
}
//la partie de récursivité
if(A->pf!=NULL) return pere(A->pf,x); // on passe au pf suivant
if(A->fp!=NULL) return pere(A->fp,x);
}
arbre pere(arbre A,int x)
{
arbre tmp,p;
if(A==NULL)
return NULL;
if(A->pf!=NULL) //pf c'est le premier fils
{
tmp= A;
p=tmp->pf;
while((p!=NULL)&&(p->age!=x))
{
p=p->fp; //fp c'est le fils proche autrement le frère de premier fils
}
if(p!=NULL)
return tmp; // ici on retourne le père
}
//la partie de récursivité
if(A->pf!=NULL) return pere(A->pf,x); // on passe au pf suivant
if(A->fp!=NULL) return pere(A->fp,x);
}
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
17 juil. 2013 à 19:04
17 juil. 2013 à 19:04
Pour le parcours de l'arbre ?
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
18 juil. 2013 à 01:39
18 juil. 2013 à 01:39
C'est ça, mais il ne faut pas se perdre dans le parcours... Parce que le frère à aussi des fils, si tu "descend" au PremierFils pour voir ses propres fils, tu oublies les frères ;)
arthurg95
Messages postés
2421
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
4 juin 2014
341
18 juil. 2013 à 12:29
18 juil. 2013 à 12:29
Le problème n'est pas le retour... J'essaye de faire un shéma...
Pere1 => Fp1, df1
fp1 => fp2, df2
df1 => fp3, df3
fp2 => fp4,df4
....
Si tu cherches le père de df4 par exemple, il faut que ton algo soit capable de faire TOUT l'arbre et ne pas en oublier... Il faut penser à remonter dans l'arbre à chaque fois... En général la première chose à laquelle on penser c'est parcourir Pere1, fp1, df1, fp2,df2, fp4, df4, ....
Et on oublie tout une lignée ;)
Pere1 => Fp1, df1
fp1 => fp2, df2
df1 => fp3, df3
fp2 => fp4,df4
....
Si tu cherches le père de df4 par exemple, il faut que ton algo soit capable de faire TOUT l'arbre et ne pas en oublier... Il faut penser à remonter dans l'arbre à chaque fois... En général la première chose à laquelle on penser c'est parcourir Pere1, fp1, df1, fp2,df2, fp4, df4, ....
Et on oublie tout une lignée ;)