¿Existe alguna definición formal sobre la altura promedio de un árbol binario?
Tengo una pregunta tutorial sobre cómo encontrar la altura promedio de un árbol binario usando los siguientes dos métodos:
La solución natural podría ser tomar la longitud promedio de todos los caminos posibles desde la raíz hasta una hoja, es decir
.
Otra opción es definirlo de forma recursiva, es decir, la altura promedio de un nodo es el promedio sobre las alturas promedio de los subárboles más uno, es decir
con para hojas y para espacios vacíos.l avh 2 ( _ ) = 0
Según mi comprensión actual, por ejemplo, la altura promedio del árbol
1
/ \
2 3
/
4
is por el segundo método, que es usar recursividad.
Sin embargo, todavía no entiendo cómo hacer el primero. no es correcto.
Respuestas:
No hay razón para creer que ambas definiciones describan la misma medida. También puede escribir recursiva:avh1
con para hojas l . Si no cree que esto sea lo mismo, despliegue la definición de avh 1 en el lado derecho o realice una prueba de inducción.avh1( l ) = 0 l avh1
Ahora vemos que funciona de manera bastante diferente a avh 2 . Mientras que avh 2 pesa las alturas recursivas de los niños nodos por igual (sumando y dividiendo entre dos), avh 1 los pesa de acuerdo con la cantidad de hojas que contienen. Por lo tanto, son los mismos (módulo de anclaje) para los árboles con balance de hojas, que se equilibra en el sentido de que los árboles hermanos tienen igualmente tantas hojas. Si simplifica la forma recursiva de avh 1 con lv ( l ) = lv ( r )avh1 avh2 avh2 avh1 avh1 lv( l ) = lv( r ) Esto es inmediatamente evidente. En los árboles desequilibrados, sin embargo, son diferentes.
Sus cálculos son correctos (dada su definición); tenga en cuenta que el árbol de ejemplo no está balanceado en hojas.
fuente
Editar: Jeffe hace un buen punto en su comentario anterior. Probablemente debería leer "correcto versus incorrecto" en la siguiente respuesta como "conveniente / consistente versus inconsistente".
Parece ser que su segundo cálculo es incorrecto. Deje que la altura de un subárbol con un solo nodo (es decir, una hoja) sea 0. Luego, la altura de la raíz del subárbol en:
Creo que está haciendo el primer cálculo correctamente, y 1.5 es la respuesta correcta.
fuente