Introduction :
Visualiser la structure d'un arbre binaire est crucial pour faciliter la compréhension et le débogage. Cet article examine une solution Java pour imprimer des arbres binaires dans un format schématique, fournissant une représentation claire de la structure de l'arbre.
Solution :
L'objectif principal de cette solution consiste à imprimer un arbre binaire par lignes, similaire à l'exemple suivant :
4 / \ 2 5
A cet effet, le code fourni établit un Node personnalisé class :
public class Node<A extends Comparable> { Node<A> left, right; A data; public Node(A data){ this.data = data; } }
Impression par lignes :
L'idée clé de cette solution est d'imprimer l'arbre de haut en bas, ligne par ligne. Les enfants de chaque nœud sont imprimés sur les lignes suivantes, avec des retraits appropriés pour indiquer leur niveau dans l'arborescence.
Par exemple, pour visualiser un arbre avec la structure suivante :
4 / \ 2 5 / \ / 1 3 6
La sortie serait ressembler à ce qui suit :
4 ├── 2 │ ├── 1 │ └── 3 └── 5 └── 6
Mise en œuvre du code :
La logique de base est encapsulé dans la méthode d'impression de la classe TreeNode :
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 + " "); } } }
Cette méthode parcourt récursivement l'arbre, en imprimant ligne par ligne et en tenant compte des retraits appropriés pour délimiter la structure de l'arbre.
Remarque :
Bien que cette solution se concentre sur l'impression d'arbres arbitraires, elle peut être facilement modifiée pour cibler spécifiquement arbres binaires en limitant chaque nœud pour qu'il ait un maximum de deux enfants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!