private void BackTrack(PfadKandidat kandidat) { if (this.Reject(kandidat)) { return; } if (this.Accept(kandidat)) { this.akzeptiertePfadKandidaten.Add(kandidat); return; } Haltestelle zielhaltestelle; if (kandidat.StreckenCount == 0) { zielhaltestelle = kandidat.Starthaltestelle; } else { var zielhaltestellenname = kandidat.Zielhaltestellenname; zielhaltestelle = this.FindHaltestelle(zielhaltestellenname); } foreach (var strecke in zielhaltestelle.Strecken) { var nextKandidat = kandidat.Clone(); nextKandidat.AddStrecke(strecke); this.kandidaten.Add(nextKandidat); } }