Nous avons besoin de visiter tous les nœuds de feuilles et de comprendre la profondeur qu'ils sont. Ceci suggère:
Donnez votre fonction nœud visite un argument supplémentaire. Il a besoin de savoir non seulement où il va, mais aussi la profondeur est. Chaque fois qu'il est appelé, il est appelé à aller plus loin, de sorte que votre noeud visiteur a juste pour augmenter le nombre de profondeur, il a obtenu de l'appelant.
Maintenant, l'une des 2 choses peuvent se produire:
Soit le nœud que vous avez trouvé est un nœud feuille, dire qu'il ne pas d'enfants; dans ce cas, votre visiteur a besoin de retourner sa profondeur à l'appelant. Oui, il retourne juste le nombre qu'il a obtenu de l'appelant, + 1.
ou ce n'est pas un nœud feuille. Dans ce cas, il aura soit 1 ou 2 enfants. Nous avons besoin de revenir si juste la somme des profondeurs retournées par les enfants ces rapports de profondeur de nos enfants de retour à l'appelant,.
Par la magie de récursion, le nombre est retourné au visiteur de la racine sera la somme des profondeurs de tous les enfants.
Pour obtenir une profondeur moyenne, vous aurez envie de diviser par le nombre de nœuds feuilles; que je laisse une seconde traversal pour calculer. Cela pourrait se faire en une seule, mais ce serait un peu plus compliqué.