Ho risolto utilizzando un altro approccio.
Ho creato una funzione (che ho chiamato nodeDepth) che mi restituisce la profondità di un nodo (semplicemente vado dal nodo in questione fino alla radice ed aumento un contatore ogni volta che mi sposto).
Nella funzione depth invece faccio uno scan su tutti i nodi dell'albero:
faccio tornare nodeDepth() se sono su una foglia e depth() su ogni figlio se sono su un nodo qualsiasi.
In questo modo in modo ricorsivo arrivo alle foglie e poi restituisco il valore più alto.
Se volete potete chiudere