allora il primo if(!punt) ha le seguenti funzioni:

1)alla prima chiamata della funzione cerca, if(!punt) si traduce in italiano come "se l'lbero e' vuoto non fare nulla",infatti ritorna NULL

2)nelle varie chiamate ricorsive invece quel controllo risulta essere sempre falso finche non si arriva a un nodo che non ha un determinato filglio ,infatta supponiamo che il nodo N non abbia figlio dx(e naturalmente che l'info del nodo N non e' il valore che cerchi)allora if(!punt)risulta falso e va avanti....info non e' quello che cerci e va avanti......a questo punto richiama la funzione cerca col puntatore al figlio dx!bene qusto puntatore in effetti e' nullo xke N non ha filgio dx quindi quel controllo risulta vero e la funzione ritorna ...(l'attenzione ritorna al nodo N)a questo punto il flag e' ancora falso e viene richiamata la funzione cerca col punt al figlio centrale......e cosi' via

vengono percorsi tutti i nodi non soli i figli della radice xche ciascun nodo richiama a sua volta la funzione su ciascun suo figlio che a sua volta la richiama su ciascun suo figlio....finche qualche stronzo di nodo finalmente non avra' figli.....
spero di essere stato abbastanza chiaro........in caso contrario fammi sapere che ti preparo un disegnino.....e' piu' facile spiegarlo con un disegno


ciao