Cómo borrar de una Max-Heap?

votos
0

Si ponemos 15 en la raíz, lo que sería el proceso de heapify?

            85
            /\
           /  \
          /    \
        55      70
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   /
   14 15 15

¿Cuál debe ser la manera de eliminar 85 del montón?

Publicado el 10/07/2011 a las 10:53
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
0

Para añadir pones el nuevo valor en último (derecho a la 20 en el ejemplo), y luego intenta solucionar el montón, es decir compararlo con sus padres, si es mayor el canje y comparar de nuevo hasta que no se necesita ningún intercambio ( o se llega a la raíz)

Con el fin de eliminar quita que sustituya el último objeto (15 en que ejemplo) y corregir el montón hacia abajo.

Respondida el 10/07/2011 a las 11:05
fuente por usuario

votos
1

Si elimina 85 y reemplazarlo con 15, se gira el semi-pila de nuevo en un montón por downheaping, es decir, el 15 en la raíz va a "hundir" a lo largo de la trayectoria de los niños más grandes. En este caso se intercambiará con 70 a continuación, con 65.

Editar: porque siempre estamos intercambiando con el niño más grande, se asegura que terminar con un montón válida (por ejemplo, si nos cambiado nuestra 15 con 55 en lugar de 70, tendríamos 70 como un hijo de 55, que no es bueno)

Respondida el 10/07/2011 a las 11:08
fuente por usuario

votos
4

Como siempre se está intercambiando con el mayor de los dos (propiedad del montículo significa que el padre es siempre más grande que sus hijos):

            15
            /\
           /  \
          /    \
        55      70
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   
   14 15

            70
            /\
           /  \
          /    \
        55      15
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   
   14 15

            70
            /\
           /  \
          /    \
        55      65
        /\      /\
       /  \    /  \
      22  33  30  15
     /\   
   14 15
Respondida el 10/07/2011 a las 11:09
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more