Pour la jolie méthode d'impression de ma classe BST, on nous a dit par notre professeur pour l'arbre:Comment imprimer efficacement l'espace blanc nécessaire à la tâche dans mon prettyPrint() méthode BST
bst.put(7, 7); // _7_
bst.put(8, 8); // / \
bst.put(3, 3); // _3_ 8
bst.put(1, 1); /// \
bst.put(2, 2); // 1 6
bst.put(6, 6); // \ /
bst.put(4, 4); // 2 4
bst.put(5, 5); // \
// 5
Le code doit imprimer l'arbre comme si:
"-7\n" +
" |-3\n" +
" | |-1\n" +
" | | |-null\n" +
" | | -2\n" +
" | | |-null\n" +
" | | -null\n" +
" | -6\n" +
" | |-4\n" +
" | | |-null\n" +
" | | -5\n" +
" | | |-null\n" +
" | | -null\n" +
" | -null\n" +
" -8\n" +
" |-null\n" +
" -null\n";
J'ai mon code pour imprimer l'arbre presque parfait à ce que le conférencier comme spécifié en utilisant récursion, bien que je ne peux pas trouver un moyen d'imprimer les espaces blancs comme il précisé. Je comprends que c'est un problème avec seulement l'impression des caractères sur n'importe quel sous arbre, mais je ne suis pas sûr d'un moyen d'imprimer correctement les espaces.
Voici comment mes impressions de code:
-7
|-3
| |-1
| | |-null
| |-2
| | |-null
| |-null
|-6
| |-4
| | |-null
| |-5
| | |-null
| |-null
|-null
-8
|-null
-null
Comme vous pouvez le voir pour les bons nœuds d'arbres sous il n'y a pas l'espacement prefixxed, et toute tentative de préfixe un espace pour les bons nœuds d'arbres sous, a seulement modifié le format de l'arbre.
Voici mon code, toute aide serait profondément heureux
public String prettyPrintKeys() {
String output = "";
int indent = 0;
output = prettyPrint(root, indent);
System.out.print(output);
return output;
}
private String prettyPrint(Node x, int indent){
String output = "";
for(int i=0; i<indent; i++){
output = output + " |";
}
if(x == null){
return output = output + "-null\n";
}
indent++;
output = output + "-" + x.key + "\n" + prettyPrint(x.left, indent);
indent--;
output = output + prettyPrint(x.right, indent);
return output;
}
Vérifiez sur http://stackoverflow.com/questions/4965335/how-to-print-binary-tree-diagram –
merci pour cela , bien que certains aient eu des informations utiles, aucun d'entre eux n'avait vraiment la même disposition que mon code, et je me demandais s'il y avait un moyen, sans modifier complètement mon code ci-dessus, de faire le simple préfixe d'espace – roughosing