Einführung:
Die Visualisierung der Struktur eines Binärbaums ist entscheidend, um das Verständnis zu erleichtern und Debuggen. In diesem Artikel wird eine Java-Lösung zum Drucken von Binärbäumen in einem Diagrammformat untersucht, die eine klare Darstellung der Baumstruktur bietet.
Lösung:
Das Hauptziel dieser Lösung besteht darin, einen Binärbaum zeilenweise zu drucken, ähnlich dem folgenden Beispiel:
4 / \ 2 5
Zu diesem Zweck erstellt der bereitgestellte Code einen benutzerdefinierten Knoten Klasse:
public class Node<A extends Comparable> { Node<A> left, right; A data; public Node(A data){ this.data = data; } }
Zeilenweises Drucken:
Die wichtigste Erkenntnis dieser Lösung besteht darin, den Baum Zeile für Zeile von oben nach unten zu drucken. Die untergeordneten Knoten jedes Knotens werden in nachfolgenden Zeilen mit entsprechenden Einzügen gedruckt, um ihre Ebene im Baum anzuzeigen.
Zum Beispiel, um einen Baum mit der folgenden Struktur zu visualisieren:
4 / \ 2 5 / \ / 1 3 6
Die Ausgabe würde ähneln dem Folgenden:
4 ├── 2 │ ├── 1 │ └── 3 └── 5 └── 6
Code-Implementierung:
Die Kernlogik ist gekapselt in der print-Methode der TreeNode-Klasse:
public void print(StringBuilder buffer, String prefix, String childrenPrefix) { buffer.append(prefix); buffer.append(name); buffer.append('\n'); for (Iterator<TreeNode> it = children.iterator(); it.hasNext();) { TreeNode next = it.next(); if (it.hasNext()) { next.print(buffer, childrenPrefix + "├── ", childrenPrefix + "│ "); } else { next.print(buffer, childrenPrefix + "└── ", childrenPrefix + " "); } } }
Diese Methode durchläuft den Baum rekursiv, druckt Zeile für Zeile und berücksichtigt geeignete Einrückungen, um die Struktur des Baums abzugrenzen.
Hinweis:
Während sich diese Lösung auf das Drucken beliebiger Bäume konzentriert, kann dies der Fall sein lässt sich leicht ändern, um speziell auf binäre Bäume abzuzielen, indem jeder Knoten auf maximal zwei untergeordnete Knoten beschränkt wird.
Das obige ist der detaillierte Inhalt vonWie drucke ich Binärbaumdiagramme in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!