Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //package whatever; // don't place package name!
- import java.io.*;
- import java.util.*;
- class TopologicalSort {
- static class GraphNode {
- int value;
- List<GraphNode> neighbors;
- public GraphNode(int x) {
- this.value = x;
- this.neighbors = new ArrayList<>();
- }
- }
- static void topologicalSort(GraphNode node) {
- Deque<GraphNode> stack = new ArrayDeque<>();
- Set<Integer> visitedNodes = new HashSet<>();
- topologicalSort(node, stack, visitedNodes);
- while (!stack.isEmpty()) {
- System.out.println(stack.pop().value);
- }
- }
- // 0 : 1, 3
- // 3 : 4
- // 4
- // stack : 2, 1, 4, 3, 0
- static void topologicalSort(GraphNode node, Deque<GraphNode> stack, Set<Integer> visitedNodes) {
- // first mark it as visited
- if (visitedNodes.contains(node.value)) {
- return;
- }
- visitedNodes.add(node.value);
- for (GraphNode neighbor : node.neighbors) {
- topologicalSort(neighbor, stack, visitedNodes);
- }
- stack.offerFirst(node);
- }
- public static void main(String[] args) {
- System.out.println("Hello Java");
- GraphNode zero = new GraphNode(0);
- GraphNode one = new GraphNode(1);
- GraphNode two = new GraphNode(2);
- GraphNode three = new GraphNode(3);
- GraphNode four = new GraphNode(4);
- zero.neighbors.add(three);
- zero.neighbors.add(one);
- one.neighbors.add(two);
- three.neighbors.add(four);
- four.neighbors.add(two);
- topologicalSort(zero);
- }
- }
Add Comment
Please, Sign In to add comment