Probar un montón binario tiene hojas

16

Estoy tratando de demostrar que un montón binario con nodos tiene exactamente hojas, dado que el montón se construye de la siguiente manera:nn2

Cada nuevo nodo se inserta a través de percolar . Esto significa que cada nuevo nodo debe crearse en el siguiente hijo disponible. Lo que quiero decir con esto es que los niños se llenan de nivel hacia abajo y de izquierda a derecha. Por ejemplo, el siguiente montón:

    0
   / \
  1   2

se tiene que se han construido en este orden: 0, 1, 2. (Los números son sólo índices, no dan ninguna indicación de los datos reales celebradas en ese nodo.)

Esto tiene dos implicaciones importantes:

  1. No puede existir ningún nodo en el nivel sin que el nivel esté completamente llenok+1k

  2. Debido a que los niños se construyen de izquierda a derecha, no puede haber "espacios vacíos" entre los nodos en el nivel , o situaciones como las siguientes: k+1

        0
       / \
      1   2
     / \   \
    3  4    6
    

(Esto sería un montón ilegal según mi definición.) Por lo tanto, una buena manera de pensar en este montón es una implementación de matriz de un montón, donde no puede haber ningún "salto" en las indecesiones de la matriz.

Entonces, estaba pensando que la inducción probablemente sería una buena manera de hacer esto ... Tal vez algo que tenga que lidiar incluso con casos extraños para n. Por ejemplo, alguna inducción que utiliza el hecho de que los montones pares construidos de esta manera deben tener un nodo interno con un hijo para un n par, y no tales nodos para un n impar. Ideas?

varatis
fuente
@DaveClarke: No del todo; La pregunta vinculada es el resultado de un malentendido sobre las partes de los editores que quedamos allí como referencia.
Raphael
¿Has probado la inducción sobre el número de nodo resp. número de inserciones?
Raphael
@DaveClarke: ¿Por qué? Es una pregunta válida en sí misma, en mi humilde opinión.
Raphael
Por cierto, la pregunta no tiene nada que ver con montones. El reclamo es válido para cualquier árbol binario completo
Ran G.

Respuestas:

8

Si recibo su pregunta correctamente, el montón obtenido es solo un árbol binario ordenado, donde ordenado quiero decir que el nivel solo se puede ocupar después de que el nivel k - 1 se haya llenado por completo, y cada nivel está ocupado desde la izquierda a la derecha, sin saltar.kk1

Entonces la prueba es así.

  1. Un árbol perfecto de profundidad tiene exactamente 2 k + 1 - 1 nodos.k2k+11
  2. Suponga que el montón alcanza la profundidad . Así k
    1. hasta el nivel el árbol es perfecto (y tiene 2 k - 1 nodos allí)k12k1
    2. en el último nivel, hay exactamente nodos, que son todas hojas.n2k+1
  3. Cada hoja en el nivel tiene un padre. Además, cada dos hojas consecutivas tienen el mismo padre (tal vez a excepción del último nodo, cuyo padre tiene un solo hijo)k
  4. Por lo tanto, de los nodos en el nivel k - 1 , n - 2 k + 12k1k1son padres, y el resto2k-1-n-2 k +1n2k+12son hojas.2k1n2k+12
  5. La cantidad total de hojas es Que te da lo que necesitas.
    n2k+1+2k1n2k+12
Sonó.
fuente
1
Tenga en cuenta que full son diferentes de complete son diferentes de árboles binarios perfectos . Selección desafortunada, ambigua e inconsistente de las palabras allí, pero ¿qué puede hacer al respecto? Supongo que seguir la definición de Wikipedia tiene sentido, ya que la mayoría buscará allí primero.
Raphael
Oh, wow, ni siquiera sabía estos términos. Gracias por señalar esto.
Ran G.
"hasta el nivel k − 1 el árbol es perfecto (y tiene 2 ^ k - 1 nodos allí)" y "Por lo tanto, de los 2 ^ (k − 1) nodos en el nivel k − 1" parecen ser declaraciones contradictorias, ¿O me estoy perdiendo algo?
adrian h.
@adrianh. ( ) nodos en el subárbol completo, 2 k - 1 nodos sólo en el último nivel (por lo tanto en todo el subárbol hay 2 k - 1 + 2 k - 2 + . . . Nodos.)2k12k12k1+2k2+...
Ran G.
Ah, tienes toda la razón, ¡muchas gracias por la aclaración!
adrian h.
11

Aquí hay una prueba lógica más simple.

Última hoja es índice. Su padre está en el índice n / 2 y, de manera similar, no hay ningún elemento tal que su padre sea el elemento ( h n / 2 + 1 ) t h . Por lo tanto, las hojas se indexan de n / 2 +1 a n.nthn/2n/2+1)thn/2

(n/2)(n/2)

Zubin Pahuja
fuente
1
Explicación bastante intuitiva y clara. Gracias.
sombrero blanco