-
affichage d'un arbre
Je rencontre un problème pour afficher un arbre créé à partir d'une expression régulière.
Je souhaiterais l'afficher à l'aide d'un tableau (y a t il une méthode plus adéquate?) mais je ne vois pas comment programmer cela en gardant une symétrie. En effet, des éléments de l'arbre se croise...
-
Que veux-tu dire "des éléments se croisent" ? Ce n'est plus un arbre, c'est un graphe.
-
quelle est ton expression?
-
c'est un travail sur les expressions régulières que je dois mettre sous forme d'arbre et ensuite afficher cet arbre.
Le probleme que je rencontre est que je ne sais pas comment faire pour afficher un tableau qui soit symétrique:
l'arbre fonctionne avec des fils droit et gauche et plus la prfondeur de l'arbre est importante plus j'ai du mal à créer un algorithme ou les fils droit de certains noeud ne se superposent avec des fils gauche de certains autre noeud
J'espere avoir été plus clair :roll:
-
Ton affichage, il est graphique ou en mode texte ? est ce que tu peux preciser un peu ce que tu entends par affichage ? Car j'ai deja du afficher des arbres, mais de facon graphique.
Pour cela, je m'y prennais de la facon suivante :
Tu commences par le calcul de la taille de l'arbre. Si c'est un feuille, tu decides la taille qu'il faut en fonction de la facon dont tu souhaites afficher la feuille. Si c'est un noeud, du calcule la taille des fils et ensuite, en fonction de ca et de la facon dont tu souhaites afficher les fils gauche et droit et le noeud, tu calcules la taille de ton noeuds
En connaissant la taille de l'arbre pour chacun de ces noeuds, tu pourras afficher ton arbre sans avoir de probleme de superposition. M
J'espere que ca t'auras un peu mis sur la voie car je ne sais pas si tu peux faire ca dans ton cas ou tu affiches avec des tableaux. J'avoue n'avoir pas trop compris ce que tu appeles afficher avec des tableaux.[/code]
-
il veut dire il a un arbre quelconque il veut l'afficher.
Après le tableau c'est la facon dont est codé son arbre représentation lv/lh par exemple.
-
Salut
J'ai utilisé cette méthode pour afficher un arbre binaire.
Pour avoir un affichage symétrique, j'ai calculé la profondeur de l'arbre, le nombre de noeuds maxi à afficher est donc 2 ^profondeur , tu peux ainsi calculer la largeur nécessaire pour tout afficher.
Ensuite tu utilises une file pour enfiler les noeuds à afficher en utilisant un numéro d'étage et un numéro d'ordre dans l'étage pour ne pas te tromper dans la position de l'affichage et pouvoir tracer les lignes reliant les noeuds. C'est un petit calcul relativement simple.
Si tu es intéressé, je peux t'envoyer les sources, c'est du C, j'ai fait ça avec GTK, mais là mon code n'est pas terrible car je ne connais pas bien GTK.
-
Bien evidement, ce que j'ai decris s'applique aussi au arbre quelconque... il suffit de remplacer fils gauche et fils droite par l'ensemble des fils d'un noeud.