public override bool componentesSeparados() { bool separados; separados = false; Nodo actual; Nodo siguiente; Arista arista; List <Arista> recorridas; this.setGrados(); recorridas = new List <Arista>(); actual = this[0]; do { siguiente = MetodosAuxiliares.siguienteEnCaminoNoDir(actual, recorridas); arista = MetodosAuxiliares.encuentraArista(siguiente, actual); recorridas.Add(arista); siguiente.GradoSalida--; arista = MetodosAuxiliares.encuentraArista(actual, siguiente); recorridas.Add(arista); actual.GradoSalida--; actual = siguiente; } while (actual.grados() != 0); if (this.Aristas != recorridas.Count) { separados = true; } return(separados); }
public override List <string> caminoEuleriano() { List <string> recorrido; List <string> recorridoAux; List <Arista> recorridas; Nodo actual; Nodo siguiente; Arista arista; recorrido = new List <string>(); recorridoAux = new List <string>(); this.setGrados(); recorridas = new List <Arista>(); actual = MetodosAuxiliares.inicioDeCaminoNoDir(this); do { recorridoAux.Add(actual.Nombre); do { siguiente = MetodosAuxiliares.siguienteEnCaminoNoDir(actual, recorridas); arista = MetodosAuxiliares.encuentraArista(siguiente, actual); recorridas.Add(arista); siguiente.GradoSalida--; arista = MetodosAuxiliares.encuentraArista(actual, siguiente); recorridas.Add(arista); actual.GradoSalida--; actual = siguiente; recorridoAux.Add(actual.Nombre); } while (actual.GradoSalida != 0); recorrido = MetodosAuxiliares.sumaListas(recorridoAux, recorrido); recorridoAux = new List <string>(); if (recorridas.Count != this.Aristas) { actual = base.BuscaNodo(recorrido.First().ToString()); recorrido = MetodosAuxiliares.subList(recorrido, 1); } } while (recorridas.Count != this.Aristas); return(recorrido); }