拓扑算法未返回拓扑排序列表

时间:2015-11-19 20:06:52

标签: java topological-sort

我已经实现了一个使用DFS的拓扑排序算法,以构建拓扑排序的课程列表及其预先要求。我已将其作为邻接列表实现。

输入:

  • 总共7门课程。
  • 课程1具有课程3的先决条件
  • 课程2没有先决条件
  • 课程3具有课程2的先决条件
  • 课程4具有课程1,课程2,课程7
  • 的先决条件
  • 课程5具有课程3,课程1
  • 的先决条件
  • 课程6具有课程4的先决条件
  • 课程7没有先决条件

所以我运行我的topSort算法:

public static void topSort(Course[] courses){
    int i = 0;
    Course[] solution = new Course[courses.length];
    for (Course c: courses){
        if (!c.visited){
            solution[i] = DFS(c);
        }
        i++;
    }

    for (Course e: solution){
        System.out.println(e);
    }
}

public static Course DFS(Course course){
    course.visited = true;
    for (Course pr:course.preReqs){
        if (!pr.visited){
            DFS(pr);
        }
    }
    return course;      
}

输出:

Course-1
null
null
Course-4
Course-5
Course-6
null

我不确定我在哪里出错了。请指教!

0 个答案:

没有答案