Как удалить из Max-Heap?

голоса
0

Если положить 15 в корень, что бы процесс heapify?

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

Каким должен быть способ удаления 85 из Heap?

Задан 10/07/2011 в 10:53
источник пользователем
На других языках...                            


3 ответов

голоса
0

Для добавления вы положили новое значение в качестве последнего (право на 20 в вашем примере), а затем попытаться исправить кучу, что сравнить его со своим родителем, если он больше своп и сравнить снова, пока не подкачки не требуется ( или вы получите корень)

Чтобы удалить удалить заменить последний объект (15 в вас, например) и исправить кучу вниз.

Ответил 10/07/2011 в 11:05
источник пользователем

голоса
1

При удалении 85 и заменить его на 15 лет, вы поворачиваете полупродукт кучи обратно в кучу downheaping, то есть 15 в корне «тонуть» по пути больших детей. В этом случае он будет поменять с 70, то с 65 лет.

Edit: потому что мы всегда обменивать с большим ребенком, он гарантирует, что мы в конечном итоге с действительной куче (например, если мы поменялись местами наши 15 с 55, а не 70, мы имели бы 70 как ребенок 55, который не лучшим образом)

Ответил 10/07/2011 в 11:08
источник пользователем

голоса
4

Как вы всегда обменивать его с большей из двух (кучного собственности означает, что родитель всегда больше, чем его дети):

            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
Ответил 10/07/2011 в 11:09
источник пользователем

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