Java Imprimindo uma árvore binária usando ordem de nível em um formato específico
Ok, li todas as outras questões relacionadas e não consigo encontrar uma que ajude com java. Tenho a idéia geral de decifrar o que posso em outros idiomas; mas ainda estou para descobrir.
Problema: eu gostaria de nivelar a classificação (que eu tenho trabalhando usando a recursão) e imprimi-la na forma geral de uma árvore.
Então diga que eu tenho isso:
1
/ \
2 3
/ / \
4 5 6
Meu código imprime a ordem de nível da seguinte maneira:
1 2 3 4 5 6
Quero imprimi-lo assim:
1
2 3
4 5 6
Agora, antes de você me dar um discurso moral sobre como fazer o meu trabalho ... Eu já terminei o meu projeto AP Comp Sci e fiquei curioso sobre isso quando meu professor mencionou a coisa da Primeira Pesquisa de Largura.
Não sei se isso vai ajudar, mas aqui está o meu código até agora:
/**
* Calls the levelOrder helper method and prints out in levelOrder.
*/
public void levelOrder()
{
q = new QueueList();
treeHeight = height();
levelOrder(myRoot, q, myLevel);
}
/**
* Helper method that uses recursion to print out the tree in
* levelOrder
*/
private void levelOrder(TreeNode root, QueueList q, int curLev)
{
System.out.print(curLev);
if(root == null)
{
return;
}
if(q.isEmpty())
{
System.out.println(root.getValue());
}
else
{
System.out.print((String)q.dequeue()+", ");
}
if(root.getLeft() != null)
{
q.enqueue(root.getLeft().getValue());
System.out.println();
}
if(root.getRight() != null)
{
q.enqueue(root.getRight().getValue());
System.out.println();
curLev++;
}
levelOrder(root.getLeft(),q, curLev);
levelOrder(root.getRight(),q, curLev);
}
Pelo que pude descobrir, precisarei usar a altura total da árvore e usar um contador de nível ... O único problema é que meu contador de nível continua contando quando meu levelOrder usa recursão para retornar à árvore.
Desculpe se isso é demais, mas algumas dicas seriam legais. :)