Graph: Topological Sort
利用和detect cycle类似的思路, 用dfs + recursion解决。并且一定时一个有向图。
Stack<Integer> stack = new Stack<>();
// 0:unvisit, 1:visited, 2:visiting
public boolean topologicalSort(Node node) {
if(node.state = 2) return true;
node.state = 2;
if(map.get(node) != null) {
for(Node adj : map.get(node)) {
if(adj.state != 1 && topologicalSort(adj)) {
return true;
}
}
}
node.state = 1;
stack.push(node.val);
return false;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。