Heim  >  Artikel  >  Java  >  Wie drucke ich einen Binärbaum in hierarchischer Form in Java?

Wie drucke ich einen Binärbaum in hierarchischer Form in Java?

DDD
DDDOriginal
2024-11-10 17:25:02270Durchsuche

How to Print a Binary Tree in Hierarchical Form in Java?

Hierarchischen Binärbaum in Java drucken

Um einen Binärbaum zu drucken und seine hierarchische Struktur in einer Textdarstellung anzuzeigen, können Sie den Builder verwenden Muster. Mit diesem Muster können Sie inkrementell eine baumartige Ausgabe erstellen.

Ein Ansatz besteht darin, eine benutzerdefinierte TreeNode-Klasse zu erstellen, die jeden Knoten im Baum darstellt:

public class TreeNode<A extends Comparable> {
    TreeNode<A> left, right;
    A data;
}

Um den Baum zu drucken, Sie können eine rekursive Hilfsfunktion verwenden, die eine Zeichenfolgendarstellung des Baums aufbaut:

public String toString() {
    StringBuilder builder = new StringBuilder();
    print(builder, "", "");
    return builder.toString();
}

private void print(StringBuilder builder, String prefix, String childrenPrefix) {
    builder.append(prefix).append(data).append('\n');
    if (left != null) {
        left.print(builder, childrenPrefix + "├── ", childrenPrefix + "│   ");
    }
    if (right != null) {
        right.print(builder, childrenPrefix + "└── ", childrenPrefix + "    ");
    }
}

Hier stellt prefix das Präfix für den aktuellen Knoten dar undchildrenPrefix stellt das Präfix für seine untergeordneten Knoten dar. Die Funktion druckt jedes untergeordnete Element rekursiv mit einem entsprechenden Präfixeinzug aus.

Durch den Aufruf von toString() auf dem Wurzelknoten können Sie eine hierarchische Darstellung des gesamten Baums erhalten:

TreeNode<Integer> root = new TreeNode<>(4);
root.left = new TreeNode<>(2);
root.right = new TreeNode<>(5);
System.out.println(root.toString());

Dies wird Ausgabe:

4
├── 2
└── 5

Das obige ist der detaillierte Inhalt vonWie drucke ich einen Binärbaum in hierarchischer Form in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn