Problème affichage arbre binaire
zozo76
-
zozo76 -
zozo76 -
Bonjour,
J'ai un petit problème sur l'affichage d'un arbre binaire, mon arbre est crée mais je dois créer une procédure (ou une fonction) qui va faire un affichage dans un ordre très spécifique.
Je vous met la structure de mon arbre :
mes structures :
J'ai crée la procédure suivante :
(Je l'appel de cette manière : affichage (abin, NULL); )
L'affichage que je doit avoir : 1 2 3 4 5 6 7 8 9 10
L'affichage que j'ai : 1 2 3 4 5 8 6 7 9 10
Pour un chiffre ça fait un peu chier, je comprends pourquoi cette erreur se produit le programme ne s'occupe plus que d'une branche avant de passer à l'autre, mais je ne vois pas comment procéder autrement.
Pourriez-vous m'indiquer la marche à suivre, au passage j'ai crée une fonction hauteur qui renvoi la hauteur d'un arbre passé en paramètre, je ne sais pas si ça peut m'être utile...
J'ai un petit problème sur l'affichage d'un arbre binaire, mon arbre est crée mais je dois créer une procédure (ou une fonction) qui va faire un affichage dans un ordre très spécifique.
Je vous met la structure de mon arbre :
1
/ \
2 3
/ \ / \
4 5 6 7
/ / \
8 9 10
mes structures :
typedef struct boucle {
char car;
boucle *G, *D;
} noeud;
typedef noeud *abin;
J'ai crée la procédure suivante :
void affichage (abin G, abin D)
{
if (G != NULL)
{
cout<<(*G).car<<" ";
}
if (D != NULL)
{
cout<<(*D).car<<" ";
}
if (G != NULL)
{
if ((*G).G != NULL || (*D).D != NULL)
{
affichage ((*G).G, (*G).D);
}
}
if (D != NULL)
{
if ((*D).G != NULL || (*D).D != NULL)
{
affichage ((*D).G, (*D).D);
}
}
}
(Je l'appel de cette manière : affichage (abin, NULL); )
L'affichage que je doit avoir : 1 2 3 4 5 6 7 8 9 10
L'affichage que j'ai : 1 2 3 4 5 8 6 7 9 10
Pour un chiffre ça fait un peu chier, je comprends pourquoi cette erreur se produit le programme ne s'occupe plus que d'une branche avant de passer à l'autre, mais je ne vois pas comment procéder autrement.
Pourriez-vous m'indiquer la marche à suivre, au passage j'ai crée une fonction hauteur qui renvoi la hauteur d'un arbre passé en paramètre, je ne sais pas si ça peut m'être utile...
A voir également:
- Problème affichage arbre binaire
- Binaire - Guide
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Problème affichage page internet google chrome - Forum Téléphones & tablettes Android
2 réponses
UP
Allons je ne demande pas à ce que vous m'écriviez la procédure en question mais vous pourriez peut-être me donner quelques pistes ou un lien qui pourrait m'aider à faire un affichage ligne par ligne d'un arbre binaire de caractère.
C'est la dernière chose qui bloque dans mon programme...
Allons je ne demande pas à ce que vous m'écriviez la procédure en question mais vous pourriez peut-être me donner quelques pistes ou un lien qui pourrait m'aider à faire un affichage ligne par ligne d'un arbre binaire de caractère.
C'est la dernière chose qui bloque dans mon programme...
Bon, je viens de trouver après maintes recherche, le nom de ce type de parcours est un parcours en largeur :
http://fr.wikipedia.org/wiki/Arbre_binaire#Parcours_en_largeur
http://rperrot.developpez.com/articles/algo/structures/arbres/#LVI-B
Il permet de parcourir un arbre binaire ligne par ligne comme je le disais. Il faut pour cela utiliser une file d'attente de type FIFO, c'est-à-dire que l'on rajoute par la tête de la file et que l'on traite puis on enlève par la queue.
Merci à ceux qui auront lu mon problème et qui n'ont pas réussi à m'aider.
http://fr.wikipedia.org/wiki/Arbre_binaire#Parcours_en_largeur
http://rperrot.developpez.com/articles/algo/structures/arbres/#LVI-B
Il permet de parcourir un arbre binaire ligne par ligne comme je le disais. Il faut pour cela utiliser une file d'attente de type FIFO, c'est-à-dire que l'on rajoute par la tête de la file et que l'on traite puis on enlève par la queue.
Merci à ceux qui auront lu mon problème et qui n'ont pas réussi à m'aider.