📜  二叉最小堆各种操作的复杂度分析

📅  最后修改于: 2021-10-28 01:49:50             🧑  作者: Mango

最小堆是一棵完全二叉树,其中子节点比父节点具有更高的值(更低的优先级),即从根节点到叶节点的任何路径都具有元素的升序。在二叉树的情况下,根被认为是高度 0,它的子节点被认为是高度 1,依此类推。每个节点最多可以有两个孩子。

最小堆的重要属性:
1. 父节点总是比子节点具有更高的优先级和更小的值(在 Min Heaps 的情况下)。
2. 堆是一棵完整的二叉树。因此,为了填充所述N级,(N-1)的水平应当被完全填充第一和由左到右节点的N个填充水平应该发生。

基于这些属性,Min Heap 的各种操作如下:

  1. 最小堆插入操作复杂度分析
    当一个节点应该添加到堆中时,元素被添加到数组的下一个空索引处。然后检查插入的子节点是否与父节点一致。如果子节点的值低于父节点(更高的优先级),则节点的交换完成。这个交换过程一直持续到满足最小堆的属性。
  2. 最小堆删除操作复杂度分析

    节点的删除不能随机完成。具有最高优先级的元素(即父元素)将首先被删除,然后按优先级顺序删除下一个节点。这就是为什么堆被称为优先队列。
    首先,交换父节点和叶子节点的位置,然后将新形成的叶子节点(原来是父节点)从队列中移除。接下来,开始交换过程,以便根据最小堆的属性将新的父节点放置在正确的位置。

  3. 从最小堆中获取最小值的复杂性

    为了获得最小值只需返回根节点的值(即最小堆中的最小元素),因此只需返回数组索引 0 处的元素。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。