2016-05-19 1 views
-1

Il a une classe de noeuds contenant ce codeJava arbre d'impression de nœud avec des branches

class Node { 

    String value; 
    Node left; 
    Node right; 

    Node(String value) { 

    this.value = value; 
    this.left = null; 
    this.right = null; 
    } 
} 

La structure de l'arbre est déjà fait selon le noeud et ayant

Node node = new Node(); 

ici nœud représente la racine de l'arbre.
Je dois dessiner ou imprimer un arbre sans Gui, Jframe. Juste pour montrer dans le panneau de sortie. Exemple comme ceci format of the tree
cette structure arborescente devrait être dessinée en fonction des branches gauche et droite du nœud. L'arbre imprimera
Pouvez vous les gars m'aider à créer la classe d'esquisse qui imprimera l'arbre.

public static void sketch(Node root) { 

} 

Vraiment apprécier votre aide.

+0

est ce devoir? – NeoP5

+0

oui essayé quelques façons mais l'arbre ne s'affiche pas correctement et les problèmes de calcul de l'espace –

+0

ok, alors postez ce que vous avez déjà ... mais vous savez que voici la réponse: http://stackoverflow.com/questions/4965335/how- to-print-binary-tree-diagram – NeoP5

Répondre

0

Pour poster une réponse utile;) Votre image liée ne peut pas être affichée, donc je fais un essai sans savoir exactement ce que vous voulez archiver!

Utilisez la fonction récursive appelée pour chaque "sous-noeud". Si vous devez centrer votre arborescence, vous pouvez laisser votre fonction retourner le niveau maximum du nœud et ajouter des blancs devant toutes les lignes ci-dessus.

Espérons que cela vous donne une idée ... PAS TESTÉS!

public static void sketch(Node node){ 
    printNode(node,0); 
} 

public static int printNode(Node node, int level){ 
    String line = ""; 
    String lineLeft = ""; 
    String lineRight = ""; 
    for (int i = 0; i++; i<level){ 
    line = line + " "; 
    lineLeft = lineLeft + " "; 
    lineRight = lineRight + " "; 
    } 
    line = line + node.getValue(); 

    System.out.println(line); 
    System.out.println(lineLeft); 
    if(node.getLeft() != null){ 
    printNode(node.getLeft(), level+1); 
    } 
.... proceed here 
} 
+0

j'ai re ajouté la photo –

+0

S'il vous plaît. Ne jamais concaténer les objets 'String' dans une boucle. Utilisez un 'StringBuilder' ou tout autre élément qui n'est pas' immutable'. – SubOptimal

+0

Je sais ... vraiment mauvaise pratique. Est-ce que cet exemple de mon esprit directement et pour un devoir son nhmm .. ok. (même il vaudrait mieux enseigner directement les meilleures pratiques). => @SubOptimal vous avez entièrement raison – NeoP5