def __bisect__(t,e): # e = __find_centroid_edge__(t) u = e.tail_node v = e.head_node u.remove_child(v) t1 = Tree(seed_node = v) if u.num_child_nodes() == 1: p = u.parent_node v = u.child_nodes()[0] l_v = v.edge_length u.remove_child(v) if p is None: # u is the seed_node; this means the tree runs out of all but one side t.seed_node = v return t,t1 l_u = u.edge_length p.remove_child(u) p.add_child(v) v.edge_length = l_u+l_v u = p while u is not None: __updateNode__(u) u = u.parent_node t.annotated = True t1.annotated = True return t,t1