2016-05-19 8 views
-1

Es hat einen Knotenklasse diesen Code enthältJava Drucken Baum aus Knoten mit Zweigen

class Node { 

    String value; 
    Node left; 
    Node right; 

    Node(String value) { 

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

Die Baumstruktur ist bereits erfolgt entsprechend dem Knoten und mit

Node node = new Node(); 

hier Knoten stellt die Wurzel des Baumes.
Ich muss einen Baum ohne Gui, Jframe zeichnen oder drucken. Nur um im Ausgabefeld angezeigt zu werden. Beispiel wie folgt: format of the tree
Diese baumartige Struktur sollte entsprechend den linken und rechten Zweigen des Knotens gezeichnet werden.
auf Abruf sketch(node); der Baum wird gedruckt
Können Sie mir helfen, die Sketch-Klasse, die den Baum drucken wird erstellen.

public static void sketch(Node root) { 

} 

Wirklich zu schätzen Ihre Hilfe.

+0

ist diese Hausaufgabe? – NeoP5

+0

ja versucht, paar Wege, aber Baum ist nicht richtig zeigen und Speicherplatz Berechnung Probleme –

+0

ok, so posten, was Sie bereits haben ... aber Sie wissen, dass hier ist die Antwort: http://StackOverflow.com/Questions/4965335/How- to-print-binary-tree-diagram – NeoP5

Antwort

0

Um eine hilfreiche Antwort zu posten;) Ihr verknüpftes Bild kann nicht angezeigt werden, also versuche ich es, ohne genau zu wissen, was Sie archivieren möchten!

Verwenden Sie die rekursive Funktion, die für jeden "Unterknoten" aufgerufen wird. Wenn Sie Ihren Baum zentrieren müssen, können Sie die Funktion die maximale Ebene des Knotens zurückgeben und Leerzeichen vor allen darüber liegenden Zeilen anhängen.

Hoffe, das gibt Ihnen eine Idee ... nicht getestet!

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

Ich habe das Bild –

+0

Bitte hinzugefügt. Verketten Sie niemals 'String'-Objekte innerhalb einer Schleife. Verwenden Sie einen 'StringBuilder' oder etwas anderes, das nicht 'unveränderlich' ist. – SubOptimal

+0

Ich weiß ... wirklich schlechte Übung. Habe dieses Beispiel direkt aus meinem Kopf und für eine Hausaufgabe sein nhmm .. ok. (Es wäre sogar besser, Best Practice direkt zu lehren). => @SubOptimal du hast vollkommen recht – NeoP5