[C/Algo]Créer un arbre récursivement
Résolu/Fermé
A voir également:
- [C/Algo]Créer un arbre récursivement
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
- Créer un lien pour partager des photos - Guide
7 réponses
mamiemando
Messages postés
33616
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
3 avril 2025
7 837
14 nov. 2006 à 00:18
14 nov. 2006 à 00:18
Bon je n'ai pas lu l'exercice dans le détail mais voici déjà les bases pour construire un arbre. Ici je fais un arbre binaire (fils gauche fils droit) pour que ce soit plus simple et ensuite tu adaptes à ton exercice :
Bonne chance
#include <stdlib.h> #include <stdio.h> struct noeud{ struct noeud * fils_gauche; struct noeud * fils_droit; int data; // je stocke un entier dans chaque noeud de l'arbre }; typedef noeud * arbre; void ajouter_fils_gauche(noeud * r,int x){ r->fils_gauche = (struct noeud *)malloc(sizeof(struct noeud)); r->fils_gauche->data = x; } void ajouter_fils_droit(noeud * r,int x){ r->fils_droit = (struct noeud *)malloc(sizeof(struct noeud)); r->fils_droit->data = x; } void afficher_arbre(arbre a){ printf("%d\n",x) afficher_arbre(a->fils_gauche); afficher_arbre(a->fils_droit); }
Bonne chance
mamiemando
Messages postés
33616
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
3 avril 2025
7 837
14 nov. 2006 à 16:47
14 nov. 2006 à 16:47
Correction de mon premier post
Dans ton cas tu as 4 fils au lieu de 2 mais c'est le même principe. La fonction afficher_arbre fait un parcours de l'arbre. Les fonction ajouter fils servent à rajouter/remplacer un noeud fils d'un noeud r de l'arbre.
Bonne chance
void ajouter_fils_gauche(noeud * r,int x){ r->fils_gauche = (struct noeud *)calloc(1,sizeof(struct noeud)); r->fils_gauche->data = x; } void ajouter_fils_droit(noeud * r,int x){ r->fils_droit = (struct noeud *)calloc(1,sizeof(struct noeud)); r->fils_droit->data = x; } void afficher_arbre(arbre a){ printf("%d\n",x) if (a->fis_grauche) afficher_arbre(a->fils_gauche); if (a->fils_droit) afficher_arbre(a->fils_droit); }
Dans ton cas tu as 4 fils au lieu de 2 mais c'est le même principe. La fonction afficher_arbre fait un parcours de l'arbre. Les fonction ajouter fils servent à rajouter/remplacer un noeud fils d'un noeud r de l'arbre.
Bonne chance
Salut mamiemando;
Voici ma structure :
http://cjoint.com/data/lnoIhCHFtO.htm
le code qui devrait créer l'arbre :
http://cjoint.com/data/lnoNvKVllB.htm
PS : je n'ai mis que la partie de mon code qui pose problème et des printf un peu partout pour voir le déroulement
La fonction de création de l'arbre est mauvaise car elle ne fait pas ce qu'il faut.
L'image est chargée plusieurs fois alors qu'elle ne doit l'être qu'une fois et donc que les valeurs qui doivent être différentes pour chaque noeud de l'arbre sont toujours les mêmes
Je ne sais pas comment faire pour apporter des modifs au code pour que ça fasse ce qu'il faut et aurait donc besoin d'aide pour écrire un algo correct
Merci d'avance
Voici ma structure :
http://cjoint.com/data/lnoIhCHFtO.htm
le code qui devrait créer l'arbre :
http://cjoint.com/data/lnoNvKVllB.htm
PS : je n'ai mis que la partie de mon code qui pose problème et des printf un peu partout pour voir le déroulement
La fonction de création de l'arbre est mauvaise car elle ne fait pas ce qu'il faut.
L'image est chargée plusieurs fois alors qu'elle ne doit l'être qu'une fois et donc que les valeurs qui doivent être différentes pour chaque noeud de l'arbre sont toujours les mêmes
Je ne sais pas comment faire pour apporter des modifs au code pour que ça fasse ce qu'il faut et aurait donc besoin d'aide pour écrire un algo correct
Merci d'avance
J'ai pas compris comment faire ce que tu proposes.
Pourrais tu me donner un exemple ?
De plus, comment gérer le fait que l'image ne doit être chargée qu'une seule fois et pour faire le test de la condition sur chaque portion de l'image ainsi découpée
Merci
Pourrais tu me donner un exemple ?
De plus, comment gérer le fait que l'image ne doit être chargée qu'une seule fois et pour faire le test de la condition sur chaque portion de l'image ainsi découpée
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33616
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
3 avril 2025
7 837
14 nov. 2006 à 09:23
14 nov. 2006 à 09:23
Ton createQuadTree doit comporter un noeud auquel raccrocher le nouveau sous arbre (en général ce noeud est une feuille de l'arbre courant), et le sous-arbre à raddorcher (éventuellement composé juste d'un noeud). Mais sinon ce que tu as fait est dans l'idée...
Bonne chance
Bonne chance
mamiemando
Messages postés
33616
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
3 avril 2025
7 837
14 nov. 2006 à 16:43
14 nov. 2006 à 16:43
Cf les fonction ajouter_fils_droit et ajouter_fils_grauche, c'est le même principe sauf que toi tu en as 4 au lieu de 2.