Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1585 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Dessiner un arbre en java?^^

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dessiner un arbre en java?^^

n°1500092
the_phoeni​x2
Posté le 07-01-2007 à 21:46:08  profilanswer
 

Bonjour,
 
Voilà je suis entrain de concevoir une petite application en java sur les AVL avec interface graphique et représentation dynamique de l'arbre sur un Canvas, dans le cadre d'un projet pour les cours.
 
Et j'ai un petit soucis pour dessiner mon arbre, j'ai l'impression que ca peut se faire recurssivement mais je n'y arrive pas, je n'arrive pas à determiner la position des noeuds fils en fonction de leur noeud pére...je suppose que la hauteur de l'arbre intervient dans tout ca mais à force de me creuser la tête je commence à m'emmeler les pinceaux :p
 
Voilà donc si quelqu'un pouvait m'aiguiller ca m'aiderait beaucoup ^^
 
Merci d'avance !
 
PS : Je savais pas trop ou poster ma question, dslé si je me suis trompé d'endroit  :jap:

mood
Publicité
Posté le 07-01-2007 à 21:46:08  profilanswer
 

n°1500137
classpath
Posté le 08-01-2007 à 00:35:03  profilanswer
 

Salut,
 
Voici une petite fonction récursive, qui [devrait^^] imprimer ton AVL depuis un noeud père, jusqu'à un noeud donné.

Code :
  1. public static void imprimeAVL(Noeud père, Noeud noeud) {
  2.  if (père == null) {
  3.   System.out.println("Rien" );
  4.   return;
  5.  }
  6.  if (père.data == noeud.data) { System.out.println(père.data);return;
  7.  } else System.out.println(père.data);
  8.  if (père.data > noeud.data)
  9.   imprimeAVL(père.left, noeud);
  10.  else
  11.   imprimeAVL(père.right, noeud);
  12. }


Message édité par classpath le 08-01-2007 à 00:38:10
n°1500145
the_phoeni​x2
Posté le 08-01-2007 à 01:40:57  profilanswer
 

Merci ^^
 
Eu en fait je veux pas afficher mon avl dans la console, je veux le dessiner sur un canvas :p
J'étais entrain d'essayer à nouveau et j'ai presque trouvé il faut jouer avec la hauteur pour calculer les coordonnées puisque l emplacement du noeud va dépendre de la largeur que prend le sous arbre de ce même noeud, afin que les 2 sous arbres ne se dessinent pas à "cheval" l'un sur l autre^^
 
Apparemment j'ai l impression que chaque noeud se dessine à une distance de +(2^h)/2 pour le fils gauche et -(2^h)/2 pour le fils droit de l'abscisse de son père.
Avec h, la hauteur (plus grande branche)du sous arbre du noeud concerné
 
Enfin après j en suis pas sur, vous en pensez quoi? ^^


Message édité par the_phoenix2 le 08-01-2007 à 01:41:54
n°1500146
the real m​oins moins
Posté le 08-01-2007 à 02:24:01  profilanswer
 

si t'as pas envie de te faire chier avec le coté graphique de la chose, y'a des libs toutes faites ;)

n°1500147
0x90
Posté le 08-01-2007 à 02:53:05  profilanswer
 

tu peut faire ça en 2 passes, une du bas vers le haut pour calculer la largeur de chaque sous arbre :
largeur feuille == 1
largeur noeud = largeur fils gauche + largeur fils droit
 
puis une fois que t'as toute les largeurs, tu calcule les positions, la verticale est triviale c'est la profondeur de l'arbre, l'horizontale c'est :
x racine = largeur racine /2
x fils gauche = x noeud - largeur fils gauche / 2
x fils droit = x noeud + largeur fils droit / 2
 
ce sera pas optimalement compact, mais ça devrait marcher et c'est assez simple à faire.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Dessiner un arbre en java?^^

 

Sujets relatifs
Java threads : wait() & notify()Probleme envoie de mails Java : courrier indésirable
probleme internet explorer avec java scriptproblème avec java 1.5.0 pas moyen d'afficher un graphique
[Java] Classe File : méthodes delete() et renameTo() sans effet !heure java
[Java & XML] Parser SAX : comment ajouter un tag au cours du parsing ?Aide pour installer une applet java...
JAVA et TEXT : help !!!Superposer 2 Images SWT Java
Plus de sujets relatifs à : Dessiner un arbre en java?^^


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR