Musimy odwiedzić wszystkie węzły liści i dowiedzieć się, jak głębokie są. To sugeruje:
Nadaj funkcję węzła-odwiedzenie dodatkowy argument. Trzeba wiedzieć nie tylko gdzie to się dzieje, ale także, jak głęboko jest. Za każdym razem, jak się nazywa, to się nazywa na głębiej, więc węzeł gość po prostu musi zwiększyć liczbę głębokość to dostało od rozmówcy.
Teraz jedna z 2 rzeczy mogą się zdarzyć:
Albo znalazłeś węzeł jest węzłem liść, to znaczy nie ma żadnych dzieci; w tym przypadku, twój gość musi zwrócić swoją głębię rozmówcy. Tak, to właśnie zwraca liczbę Zrobiło się od rozmówcy, + 1.
czy to nie jest węzeł liścia. W tym przypadku będzie to mieć 1 lub 2 dzieci. Musimy dostać te raporty głębokości od naszych dzieci z powrotem do osoby dzwoniącej, tak po prostu wrócić sumę głębi zwracanych przez dzieci.
Przez magię rekursji, numer wrócił do odwiedzającego korzenia będzie sumą głębi wszystkich dzieci.
Aby uzyskać średnią głębokość, będziemy chcieli, aby podzielić to przez liczbę węzłów liściowych; który bym zostawić do drugiego przechodzenia do obliczenia. To może być wykonane w jednym, ale byłoby to trochę bardziej skomplikowane.