# Heap (estrutura de dados)

Na ciência da computação, um **heap** é uma estrutura de dados
baseada em uma árvore especializada que satisfaz a propriedade _heap_ descrita abaixo.

Em um *heap mínimo* (min heap), caso `P` é um nó pai de `C`, então a chave
(o valor) de `P` é menor ou igual a chave de `C`.

![MinHeap](./images/min-heap.jpeg)

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

Em uma *heap máximo* (max heap), a chave de `P` é maior ou igual
a chave de `C`.

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

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

O nó no "topo" do _heap_, cujo não possui pais, é chamado de nó raiz.

## References

- [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)