public List <CCheminDeGrapheReseau> GetChemins(CNoeudDeGrapheReseau noeud1, CNoeudDeGrapheReseau noeud2) { List <CCheminDeGrapheReseau> lstFinale = new List <CCheminDeGrapheReseau>(); CCheminDeGrapheReseau chemin = new CCheminDeGrapheReseau(); FindChemins(chemin, noeud1, noeud2, lstFinale); return(lstFinale); }
public static CCheminDeGrapheReseau operator +(CCheminDeGrapheReseau chemin, CLienDeGrapheReseau lien) { List <CLienDeGrapheReseau> lst = new List <CLienDeGrapheReseau>(chemin.Liens); Dictionary <CNoeudDeGrapheReseau, bool> dicNoeuds = new Dictionary <CNoeudDeGrapheReseau, bool>(chemin.m_dicNoeudsUtilises); lst.Add(lien); dicNoeuds[lien.NoeudArrive] = true; dicNoeuds[lien.NoeudDepart] = true; CCheminDeGrapheReseau newChemin = new CCheminDeGrapheReseau(); newChemin.m_baseLiens.AddRange(lst); newChemin.m_dicNoeudsUtilises = dicNoeuds; return(newChemin); }
private void FindChemins(CCheminDeGrapheReseau chemin, CNoeudDeGrapheReseau noeudDepart, CNoeudDeGrapheReseau noeudArrive, List <CCheminDeGrapheReseau> cheminsTrouves) { if (noeudArrive.Equals(noeudDepart)) { cheminsTrouves.Add(chemin); return; } else { foreach (CLienDeGrapheReseau lien in m_dicSuccesseurs.GetSuccesseurs(noeudDepart)) { if (!chemin.Contains(lien.NoeudArrive)) { FindChemins(chemin + lien, lien.NoeudArrive, noeudArrive, cheminsTrouves); } } } }