## 堆 堆是一种特殊的树,它满足如下两个特点: - 堆是一个完全二叉树; - 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。对于每个节点的值都大于等于子树中每个节点值的堆,叫作“大顶堆”;对于每个节点的值都小于等于子树中每个节点值的堆,叫作“小顶堆”。 堆这种数据结构几个非常重要的应用:**优先级队列(合并 k 个有序文件)、求 Top K 和求中位数**。 ### 实践 - [实现大顶堆](https://github.com/yifanzheng/leetcode-java/issues/15#issuecomment-1054053828) - [堆排序](https://github.com/yifanzheng/leetcode-java/issues/15#issuecomment-1054053971)