To keep track of which array positions hold valid info:
- either each node has info saying which of its children exist.
- or, each array position has info saying if it contains valid
info.
With complete trees, these problems go away: if there are N nodes,
they occupy the first N array positions.
- keeping track of N tells us which array positions contain valid
info.
- a new value must go in position N+1. If we delete a value: we
must reorganize the heap to fill the gap.
for(i=0;i<N;i++){
process node in position i; }
results in a level-by-level traversal.