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); }