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. :)

questionAnswers(22)

yourAnswerToTheQuestion