Ciao a tutti,
mi dareste una mano a comprendere bene che ragionamento seguire quando devo fare chiamate ricorsive per gestire un albero binario?

Ad esempio stavo provando a studiare questo codice che conta il numero di elementi presenti nell'albero:

codice:
int num_elem(tree t)
{
 if (t == NULL)
 return 0;
 else
  return num_elem(t->sx) + num_elem(t->dx) + 1;
}
Uno dei miei dubbi più grandi è:



una volta raggiunto il nodo foglia (d ad esempio) num_elem(t->sx) torna essendo NULL 0, ma dopo che succede??
Si torna alla funzione del nodo chiamante (b) e poi si visita il nodo dx oppure si lancia num_elem(t->dx) relativa alla funzione che ha precedentemente chiamato num_elem(t->sx) (tornando 0)??


Grazie