Abbiamo bisogno di visitare tutti i nodi foglia e capire quanto in profondità sono. Ciò suggerisce:
Lascia la tua funzione del nodo-visitare un argomento extra. Ha bisogno di sapere non solo dove sta andando, ma anche quanto è profonda. Ogni volta che si chiama, è chiamato ad andare più in profondità, in modo che il visitatore nodo deve solo incrementare il numero di profondità ha ottenuto dal chiamante.
Ora, una delle 2 cose possono accadere:
Sia il nodo che avete trovato è un nodo foglia, cioè non ha figli; In questo caso, il visitatore ha bisogno di tornare la sua profondità al chiamante. Sì, è proprio restituisce il numero ha ottenuto dal chiamante, + 1.
o non è un nodo foglia. In questo caso, avrà 1 o 2 bambini. Abbiamo bisogno di ottenere tali relazioni profondità dei nostri bambini torna fino al chiamante, quindi basta restituire la somma delle profondità restituiti dai bambini.
Con la magia della ricorsione, il numero restituito al visitatore di root sarà la somma delle profondità di tutti i bambini.
Per ottenere una profondità media, ti consigliamo di dividere questo per il numero di nodi foglia; che avrei lasciato ad un secondo attraversamento da calcolare. Si potrebbe essere fatto in uno, ma sarebbe un po 'più complicato.