///<summary>遍历函数</summary> ///<param name="from">起点</param> ///<param name="to">终点</param> ///<param name="max">给定最大路车站数</param> ///<param name="nw">本例中用到的有向图</param> private void Traverse(Stop from, Stop to, NetWork nw, Double max) { from.Marked = true; foreach (Route v in nw.AdjRoutes(from)) { //路径v入栈 RouteStack.Add(v); //没有访问过且不是终点 if (!v.Dest.IsMarked() && !v.Dest.Equals(to)) { //递归调用 Traverse(v.Dest, to, nw, max); } //访问到终点 else if (v.Dest.Equals(to)) { if (RouteStack.Count <= max) { //将遍历出的结果存入 this.solu.AddResult(RouteStack); } } else { //访问过 且不是终点 就是说这是遍历中遇到了环 在本例中 因为每个节点只能访问一次 因此对这种情况不做处理 } //路径v出栈 RouteStack.Remove(v); } //遍历完毕 返回上一级 将该节点设置为未访问 from.Marked = false; }