Hierarchical Merging

# Examples

#### `thresh=40`
![40](https://cloud.githubusercontent.com/assets/3823490/3928338/85888a96-2408-11e4-8c5b-e2b3d05bf693.png)

#### `thresh=40`
![40_2](https://cloud.githubusercontent.com/assets/3823490/3928340/8c746aaa-2408-11e4-823c-943fa45b167f.png)

#### `thresh=40`
![ball_40](https://cloud.githubusercontent.com/assets/3823490/3928345/9ac0be24-2408-11e4-8f1a-3fe758ed3023.png)

#### `thresh=60`
![60](https://cloud.githubusercontent.com/assets/3823490/3928354/aafcdbc4-2408-11e4-9701-c2471166a1f5.png)

#### `thresh=60`
![car_60](https://cloud.githubusercontent.com/assets/3823490/3928363/c02292b4-2408-11e4-8a0d-e4983adc51b1.png)






a heap item is [weight, node1, node2, valid_flag]! The last item is not the data from the edge!