从最大堆转换为最小堆

时间:2015-04-26 11:02:28

标签: heap

得到这个堆:

         10
        /  \
       9    8
      / \  / \
     7  6  5  4
    / \ /
   3  2 1

当我将其从最大值转换为最小堆时,我将展示每一步。我不确定我是怎么做的,请帮忙吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

尝试逐层遍历树,从最低节点开始 如果你的堆由数组表示,那将很简单 步骤
比较1和6,并切换:

      10
     /  \
    9    8
   / \  / \
  7  1  5  4
 / \ /
3  2 6

下一步 - 比较2和7(以及切换):

      10
     /  \
    9    8
   / \  / \
  2  1  5  4
 / \ /
3  7 6

下一步 - 比较3和2(和NOswitching):

      10
     /  \
    9    8
   / \  / \
  2  1  5  4
 / \ /
3  7 6

下一步 - 比较4和8(和切换):

      10
     /  \
    9    4
   / \  / \
  2  1  5  8
 / \ /
3  7 6

等。这应该创建min-heap