Como você imprimiria os dados em uma árvore binária, nível por nível, começando no topo?

Esta é uma questão de entrevista

Eu penso em uma solução. Ele usa fila.

public Void BFS()    
{   
   Queue q = new Queue();    
   q.Enqueue(root);    
   Console.WriteLine(root.Value);  

   while (q.count > 0)  
   {  
      Node n = q.DeQueue();  
      if (n.left !=null)  
       {  
          Console.Writeln(n.left);  
          q.EnQueue(n.left);  
        }   
       if (n.right !=null)  
       {  
          Console.Writeln(n.right);  
          q.EnQueue(n.right);  
        }   
    }
}    

Pode alguma coisa pensar em uma solução melhor do que isso, que não usa o Queue?

questionAnswers(11)

yourAnswerToTheQuestion