add Numbering and HeapEdge class, trying to do edge numbering so that we can visited the edges in the heap in a relatively proper order