IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

affichage d'un Arbre B dans une console


Sujet :

Langage Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut affichage d'un Arbre B dans une console
    Bonsoir, j'ai un petit projet dans lequel je souhaite afficher un arbre binaire en console dans eclipse mais je n'y arriva pas !

    voila le genre de résultat :
    6
    / \
    4 8
    / \
    1 5

    j'ai crée une interface qui regroupe ce que j'ai besoin dans mes classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public interface BinTree<T> {
     
    	boolean estVide();
    	T racine();
    	BinTree<T> sag();
    	BinTree<T> sad();
    	int hauteur();
    	int taille();
    	String affichage();
    }

    Dans ma classe feuille qui implémente l'interface BinTree<T> la méthode affichage() me représente les feuille de cette façon : <>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public String affichage(){
    		return "<>";
    	}
    et dans ma classe noeud qui implémente l'interface BinTree<T> j'ai la méthode affichage mais pour le moment elle ne m'affiche mon arbre que de cette façon : [1,[0,[2,<>,<>],[7,<>,<>]],[4,<>,<>]]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public String affichage(){
    		return "["+root+","+left.affichage()+","+right.affichage()+"]";
    	}
    si une âme charitable pourrais me donnée une piste à adopté pour arrivé à mon résultat !
    merci d'avance

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 998
    Points
    7 998
    Par défaut
    Même en y arrivant, en console, ca risque fort d'être illisible. De plus des noeuds fils vont surement finir par se superposer a mon avis.

    Sinon il faut s'amuser a compter la profondeur maximale, le nbr de fils maximum dans une profondeur et a partir de la tu pourras avoir une idée de la taille en caractère que ca va te prendre...

    Bon apres y'a peut etre un subtilité qui m'échappe.

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 6 887
    Points
    6 887
    Par défaut
    Il conviendrait d'utiliser une classe externe à la manière d'un Visisteur.

    Car il faut avoir la connaissance de l'ensemble de l'arbre pour le représenter verticalement en mode "console". Mais l'algorithme reste complexe.
    Il y a peut-être moyen de "simplifier" en utilisant une liste de StringBuilder afin de pouvoir ajouter des lignes et les "éditer".

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 243
    Points : 415
    Points
    415
    Par défaut
    C'est surtout pas possible pour une certaine hauteur si tu est limité à 80 colonnes.

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 084
    Points : 7 998
    Points
    7 998
    Par défaut
    On px aussi au lieu de dessiner un arbre "vertical" un abre horizontal horizontal si on est limité par quelques choses ou qu'il y'a un plus grand nombre de descendnances que de freres/cousins.

    En imaginant l'ecran qui va de gauche a droite et de bas en haut :

    Vertical = Du pere au enfants.
    Horizontal = Les freres ou cousins eloignés ou non.

    Ou l'inverse

    Vertical = Les frere ou cousins ....
    Horizontal = Les enfants.

    Je ne sais pas si c'est claire par contre

Discussions similaires

  1. représentation d'un arbre lexicographique dans une console
    Par kahrah dans le forum Général Python
    Réponses: 2
    Dernier message: 05/12/2013, 23h54
  2. Représenter un arbre dans une console
    Par rambc dans le forum Général Python
    Réponses: 9
    Dernier message: 31/10/2010, 23h55
  3. [MySQL] Affichage de valeurs par selection dans une table
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/12/2005, 17h04
  4. Accents dans une console windows
    Par JolyLoic dans le forum Windows
    Réponses: 8
    Dernier message: 20/10/2004, 00h57
  5. [VB.NET] Tabulation dans une console
    Par jacma dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/09/2004, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo