插入二进制堆

时间:2014-04-28 04:10:58

标签: algorithm sorting tree heap

如果我有一个数组表示包含值{2,8,3,10,16,7,18,13,15}的最小二进制堆,那么在插入值4之后数组会是什么样子?另外,我如何证明这是正确的?

我推断它将是2,4,3,10,8,7,18,13,15,16。这是对的吗?

1 个答案:

答案 0 :(得分:3)

为了证明你的最小堆是正确的,你需要递归地证明你的子节点大于你的根节点

如果根节点为n,则子节点为2n + 1和2n + 2,因此遍历树并检查子节点是否大于父节点。如果这个逻辑在任何地方都不满意,那么你的堆就坏了。

                     2
                  8     3
               10   16 7  18
             13  15 

推到最后

                     2
                  8     3
               10   **16** 7  18
            13  15  4

与父母进行比较和替换

                     2
                  **8**     3
               10   4 7  18
            13  15  16

比较并替换为父母 - 无替代

                     **2**
                  4     3
               10   8 7  18
            13  15  16