Arvore Binaria

Alguem pode me explicar a execução desse codigo.
comentei algumas linhas c/ duvidas!

public void emOrdem(ArvoreNo no) {

       if(no != null)
       {
           emOrdem(no.getNoE());
           System.out.print(no.getInfo()+" ");
           emOrdem(no.getNoD());
       }
   }
Para a árvore acima, o percurso seria: 2, 7, 5, 6, 11, 2, 5, 4 e 9. Veja a linha de execução:

emOrdem(2->esq) 
emOrdem(7->esq) 
emOrdem(2->esq) //Avanço a esquerda ate dar null
visita(2) // imprimiu o valor do nó
emOrdem(2->dir) 
//Aqui é que nao entendi, ele foi para direita e deu null? e como ele ja esta imprimindo?
visita(7) 
emOrdem(7->dir) 
emOrdem(6->esq) 
emOrdem(5->esq) 
visita(5) 
emOrdem(5->dir) 
visita(6) 
emOrdem(6->dir) 
emOrdem(11->esq) 
visita(11) 
emOrdem(11->dir) 
visita(2) 
emOrdem(2->dir) 
emOrdem(5->esq) 
visita(5) 
emOrdem(5->dir) 
emOrdem(9->esq) 
emOrdem(4->esq) 
visita(4) 
emOrdem(4->dir) 
visita(9) 
emOrdem(9->dir)