Necesitamos visitar todos los nodos de las hojas y descubrir qué tan profundos son. Esta sugerencia:
Dele a su función de visita a nodos un argumento adicional. Necesita saber no solo hacia dónde va, sino también qué tan profundo es. Cada vez que se invoca, se requiere que vaya más profundo, por lo que el visitante de su nodo solo tiene que incrementar el número de profundidad que recibió de la persona que llama.
Ahora puede suceder una de dos cosas:
O el nodo que encontraste es un nodo hoja, es decir, no tiene hijos; en este caso, su visitante debe devolver su profundidad a la persona que llama. Sí, solo devuelve el número que recibió de la persona que llama, +1.
o no es un nodo de hoja. En ese caso, tendrá 1 o 2 niños. Tenemos que hacer que los informes de profundidad de nuestros hijos vuelvan a la persona que llama, así que simplemente devuelva la suma de las profundidades devueltas por los niños.
Por la magia de la recursión, el número devuelto al visitante de la raíz será la suma de las profundidades de todos los niños.
Para obtener una profundidad promedio, querrás dividir esto por la cantidad de nodos hoja; que dejaría para un segundo recorrido para calcular. Se podría hacer en uno, pero sería un poco más complicado.