Si usted está tratando de maximizar la altura de un árbol mientras se minimiza el promedio profundidad de todos los nodos del árbol, la mejor forma inequívoca sería un "paraguas" de forma, por ejemplo, un árbol binario completo con k nodos y altura = lg k, donde 0 < k < n, junto con una única ruta, o "cola", de nodos n-k que salen de una de las hojas de la parte completa. La altura de este árbol es aproximadamente lg k + n - k.
Ahora calculemos la profundidad total de todos los nodos. La suma de las profundidades de los nodos de la parte completa es suma [j * 2^j], donde la suma se toma de j = 0 a j = lg k. Por algún álgebra, el término dominante del resultado es 2k lg k.
A continuación, la suma de las profundidades de la parte de la cola viene dada por la suma [i + lg k], donde la suma se toma desde i = 0 hasta i = n-k. Por algún álgebra, el resultado es aproximadamente (n-k) lg k + (1/2) (n-k)^2.
Por lo tanto, sumando las dos partes juntas y dividiendo por n, la profundidad promedio de todos los nodos es (1 + k/n) lg k + (n-k)^2/(2n). Tenga en cuenta que debido a 0 < k < n, el primer término aquí es O (lg n) sin importar qué k elijamos. Por lo tanto, solo debemos asegurarnos de que el segundo término sea O (lg n). Para hacerlo, se requiere que (n-k)^2 = O (n lg n), o k = n - O (sqrt (n lg n)). Con esta elección, la altura del árbol es
lg k + n - k = O (sqrt (n lg n))
esto es asintóticamente más grande que el O ordinario (lg n), y es asintóticamente el más alto que puede hacer el árbol mientras mantiene la profundidad promedio para ser O (lg n)
Con 'w' te refieres al' ω' (letra pequeña Omega), ¿verdad? – Gumbo
@Gumbo sí, gracias. – meteorgan