Skip to main content

heap

堆(heap)是一种满足特定条件的完全二叉树,主要可分为两种类型:

  • 小顶堆(min heap):任意节点的值<=其子节点的值。
  • 大顶堆(max heap):任意节点的值>=其子节点的值。

堆的常用操作包括插入、删除和堆化等。堆通常用于实现优先队列(priority queue), 在图论中的Dijkstra算法和贪心算法中的Huffman编码等场景中也有广泛应用。

heapify 堆化

堆化操作是指将一个无序的数组构造成一个堆的过程。堆化可以分为自顶向下堆化和自底向上堆化两种方法。

堆是特别的完全二叉树,树的高度是logN,所以堆的入堆操作时间复杂度也是O(logN)

demo

  • leetcode 373