## Min heap structure

Before we begin, we need to detail a few characteristics our heap structure will possess. For starters, we are going to implement the heap using an array, and the first node will occupy the `0`

index in this array. This decision is important because it affects the formula we use to calculate each node's parent and Children. Next, we will need an object to represent the nodes in our heap. Since this is going to be a very simple object for our demonstration, we'll define its class in-line with our heap implementation.

Since this is a min heap, we will only need to implement the `min`

operations. Therefore, our implementation must expose methods for `FindMin`

(peek), `ExtractMin`

(pop), and `DeleteMin`

. The heap's *Insert*, *Count*, *Children*, and *Parent* operations will each be implemented as single methods.

Our min heap implementation will also need two supporting methods to re-order the collection whenever a node is added or removed. We'll call these methods `OrderHeap`

and `SwapNodes`

, and...