# 堆 (数据结构)

在计算机科学中, 一个 **堆(heap)** 是一种特殊的基于树的数据结构，它满足下面描述的堆属性。

在一个 *最小堆(min heap)* 中, 如果 `P` 是 `C` 的一个父级节点, 那么 `P`  的key(或value)应小于或等于 `C` 的对应值.

![M最小堆](./images/min-heap.jpeg)

*Made with [okso.app](https://okso.app)*

在一个  *最大堆(max heap)* 中,  `P` 的key(或value)大于 `C` 的对应值。

![堆](./images/max-heap.jpeg)

![Array Representation](./images/array-representation.jpeg)


在堆“顶部”的没有父级节点的节点,被称之为根节点。

## 参考

- [Wikipedia](https://en.wikipedia.org/wiki/Heap_(data_structure))
- [YouTube](https://www.youtube.com/watch?v=t0Cq6tVNRBA&index=5&t=0s&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8)
