private void expand(ComponentTree.TreeNode v) {
		// initiate ix0([v]_i) and ix8([v]_i)
		v.ix0 = t.getMinDviMinus(v) >> (v.i - 1);
		v.ix8 = v.ix0 + v.delta;
		//System.out.println("ix0:"+v.ix8+" delta:"+v.delta );
		// bucket the children of [v_i]
		v.initializeBuckets();
		t.deleteRoot(v);
		
		for (ComponentTree.TreeNode wh : v.children) {
			int min = t.getMinDviMinus(wh);
			
			if (min != -1) {//System.out.println(min);
				if (!(wh.children.isEmpty() && wh.index == source)) {
					v.bucket(wh, min >> (v.i - 1));
				} else {
					ComponentTree.TreeNode current = v;
					
					while (current != null) {
						current.numberOfUnvisitedVertices--;
						current = current.parent;
					}
				}
			}			
		}
		
		v.visited = true;
	}