예제 #1
0
 private void recorridoNodoProfundidad(vertice vertice, Graphics g)
 {
     vertice.Visitado = true;
     vertice.colorear(g);
     Thread.Sleep(1000);
     vertice.DibujarVertice(g);
     foreach (arco adya in vertice.ListaAdyacencia)
     {
         if (!adya.nDestino.Visitado)
         {
             recorridoNodoProfundidad(adya.nDestino, g);
         }
     }
 }
예제 #2
0
 private void recorridoNodoAnchura(vertice vertice, Graphics g, string destino)
 {
     vertice.Visitado = true;
     cola.Enqueue(vertice);
     vertice.colorear(g);
     Thread.Sleep(1000);
     vertice.DibujarVertice(g);
     if (vertice.Valor == destino)
     {
         nodoEncontrado = true;
         return;
     }
     while (cola.Count > 0)
     {
         vertice aux = (vertice)cola.Dequeue();
         foreach (arco adya in aux.ListaAdyacencia)
         {
             if (!adya.nDestino.Visitado)
             {
                 if (!nodoEncontrado)
                 {
                     adya.nDestino.Visitado = true;
                     adya.nDestino.colorear(g);
                     Thread.Sleep(1000);
                     adya.nDestino.DibujarVertice(g);
                     if (destino != "")
                     {
                         distancia += adya.peso;
                     }
                     cola.Enqueue(adya.nDestino);
                     if (adya.nDestino.Valor == destino)
                     {
                         nodoEncontrado = true;
                         return;
                     }
                 }
             }
         }
     }
 }