avoid duplicate trees is add_neighbor()
linear time move proposal and degree determination