Avem nevoie pentru a vizita toate nodurile frunză și dau seama cât de adânc sunt. Aceasta sugerează:
Dă-funcția de a vizita nod un argument în plus. Ea trebuie să știe nu doar în cazul în care se întâmplă, dar, de asemenea, cât de adâncă este. De fiecare dată când este numit, este chemat să meargă mai adânc, astfel încât vizitatorul nod are doar pentru a incrementat numărul de adâncime luat-o de la apelant.
Acum, unul din 2 lucruri se poate intampla:
Fie nodul ați găsit este un nod frunză, adică nu are copii; în acest caz, vizitatorul trebuie să se întoarcă adâncimea sa apelantului. Da, returnează doar numărul luat-o de la apelant, + 1.
sau nu este un nod frunză. În acest caz, va avea 1 sau 2 copii. Avem nevoie pentru a obține aceste rapoarte adâncime de la copiii noștri înapoi până la apelantului, astfel încât doar să se întoarcă suma adâncimilor returnate de copii.
Prin magia recursivitatii, numărul vizitatorilor a revenit la rădăcina lui va fi suma adâncimilor tuturor copiilor.
Pentru a obține o adâncime medie, veți dori să împartă acest lucru prin numărul de noduri frunze; pe care l-ar părăsi la un al doilea traversal pentru a calcula. Ar putea fi realizat într-o singură, dar ar fi un pic mai complicat.