heap
堆(heap)是一种满足特定条件的完全二叉树,主要可分为两种类型:
- 小顶堆(min heap):任意节点的值
<=其子节点的值。 - 大顶堆(max heap):任意节点的值
>=其子节点的值。
堆的常用操作包括插入、删除和堆化等。堆通常用于实现优先队列(priority queue), 在图论中的Dijkstra算法和贪心算法中的Huffman编码等场景中也有广泛应用。
heapify 堆化
堆化操作是指将一个无序的数组构造成一个堆的过程。堆化可以分为自顶向下堆化和自底向上堆化两种方法。
堆是特别的完全二叉树,树的高度是logN,所以堆的入堆操作时间复杂度也是O(logN)
demo
- leetcode 373