//inizializza l'albero private void initTree(int depth, int split_size) { //inizializza la radice Vertex root = new Vertex(); root.NameVertex = "v1"; attrCreate(root); listV.Add(root); //vertice di appoggio temp_vertex tmp = new temp_vertex(root.NameVertex, 1); tmpVert.Add(tmp); //iterazioni breath-first per l'istanziazione dell'albero int tmpSplit = split_size; while (depth > tmp.level) { while (tmpSplit != 0) { createVertex(tmp.name_vertex, tmp.level); tmpSplit -= 1; } tmpSplit = split_size; //dopo aver generato tutti i figli di un vertice, questo può essere dalla lista di appoggio tmpVert.Remove(tmp); tmp = tmpVert.First(); } }
//crea un nodo private void createVertex(string padre, int lev) { //inizializza nodo Vertex nodo = new Vertex(); nodo.NameVertex = "v" + (1 + int.Parse(tmpVert.Last().name_vertex.Substring(1))); attrCreate(nodo); listV.Add(nodo); temp_vertex tmp = new temp_vertex(nodo.NameVertex, lev + 1); tmpVert.Add(tmp); createEdge(padre, nodo); }