如何从最大堆中删除?

use*_*312 0 heap binary-search-tree

如果我们把15放在root中,heapify的过程是什么?

            85
            /\
           /  \
          /    \
        55      70
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   /
   14 15 15
Run Code Online (Sandbox Code Playgroud)

从Heap中删除85的方法应该是什么?

Fem*_*ref 5

由于您总是将其与两者中较大的一个进行交换(堆属性意味着父级始终大于其子级):

            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
Run Code Online (Sandbox Code Playgroud)