Un árbol binario tiene 1 o 2 hijos en nodos no hoja y 0 nodos en nodos hoja. Deje que haya nodos en un árbol y tenemos que organizarlos de tal manera que todavía formen un árbol binario válido.norte
Sin probar, estoy afirmando que para maximizar la altura, los nodos dados deben estar dispuestos linealmente, es decir, cada nodo no hoja debe tener solo un hijo:
O 1
|
O 2
|
O 3
|
O 4
|
O 5
|
O 6
|
O 7
|
O 8
Aquí, la fórmula para calcular la relación de altura en términos de número de nodos es sencilla. Si es la altura del árbol, entonces h = n - 1 .hh = n - 1
Ahora, si intentamos construir un árbol binario de nodos con altura mínima (siempre reducible a un árbol binario completo), tenemos que empaquetar tantos nodos como sea posible en los niveles superiores, antes de pasar al siguiente nivel. Entonces, el árbol toma la forma del siguiente árbol:norte
O
|1
|
O------+-----O
|2 |3
| |
O---+---O O---+----O
|4 |5 6 7
| |
O---+--O O
8 9 10
Comencemos con un caso particular, .n = 2metro- 1
Sabemos que,
20 0+ 21+ 22+ . . . + 2m - 1= 2metro- 1
Además, es fácil demostrar que, un nivel puede tener como máximo 2 i nodos en ella.yo2yo
Usando este resultado en la suma anterior, encontramos que para cada nivel , de 0 a m , existe un término correspondiente 2 i - 1 en la expansión de 2 m - 1 . Esto implica que un árbol binario completo de 2 m - 1 nodos está completamente lleno y tiene una altura, h ( 2 m - 1 ) = m - 1 , donde h ( n ) = altura de un árbol binario completo con n nodos.yo0 0metro2i - 12metro- 12metro- 1h ( 2metro- 1 ) = m - 1h ( n ) =norte
Usando este resultado, , ya que el árbol con 2 m - 1 nodos está completamente lleno y, por lo tanto, un árbol con ( 2 m - 1 ) + 1 = 2 m nodos tiene que acomodar el nodo adicional en el siguiente nivel m , aumentando la altura en 1 de m - 1 a m .h ( 2metro) = m2metro- 1( 2metro- 1 ) + 1 = 2metrometrom - 1metro
Hasta ahora hemos demostrado, h ( 2 m + 1 ) = m + 1
así como, h ( 2 m + 1 - 1 ) = m
h ( 2metro) = m ,
h ( 2m + 1) = m + 1
h ( 2m + 1- 1 ) = m
Por lo tanto, m ≤ h ( n ) < m + 1∀ n ∈ Z , 2metro≤ n < 2m + 1
m ≤ h ( n ) < m + 1
Pero, tomando log (base 2) en ambos lados,
m = ⌊ log 2 ( n ) ⌋
m ≤ log2( n ) < m + 1
m = ⌊ log2( n ) ⌋
Por lo tanto, h ( n ) = m = ⌊ log 2 ( n ) ⌋∀ n , n ∈ [ 2metro, 2m + 1)
h ( n ) = m = ⌊ log2( n ) ⌋
Y podemos generalizar este resultado usando la inducción.∀ n ∈ Z
Iniciar sesión2( n + 1 ) - 1norteIniciar sesión2( n )norte