Untitled

 avatar
unknown
plain_text
a year ago
1.8 kB
4
Indexable
import java.util.HashSet;
import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
import java.util.List;

public class MyClass {
    public static void main(String args[]) {
        Node n1 = new Node(10);
        Node n2 = new Node(11);
        Node n3 = new Node(12);
        Node n4 = new Node(13);
        n1.addEdge(n2);
        n2.addEdge(n3);
        n2.addEdge(n4);
        n4.addEdge(n3);
        n3.addEdge(n1);
        
        HashSet<Node> visited = new HashSet<Node>();
        visited.add(n1);
        ArrayList<Node> traversal = new ArrayList<Node>();
        //dfs(n1, visited, traversal);
        bfs(n1, visited, traversal);
        
        for (Node n : traversal) {
            System.out.println(n.val);
        }
    }
    
    private static void dfs(Node node, HashSet<Node> visited, ArrayList<Node> traversal) {
        traversal.add(node);
        
        for (Node n : node.edges) {
            if (!visited.contains(n)) {
                visited.add(n);
                dfs(n, visited, traversal);
            }
        }
    }
    
    private static void bfs(Node node, HashSet<Node> visited, ArrayList<Node> traversal) {
        Queue<Node> queue = new LinkedList<Node>();
        queue.add(node);
        
        while (!queue.isEmpty()) {
            Node n = queue.poll();
            traversal.add(n);
            for (Node e : n.edges) {
                if (!visited.contains(e)) {
                    visited.add(e);
                    queue.add(e);
                }
            }
        }
    }
}

class Node {
    int val;
    List<Node> edges;
    
    Node(int val) {
        this.val = val;
        this.edges = new ArrayList();
    }
    
    public void addEdge(Node n) {
        edges.add(n);
    }
}
Editor is loading...
Leave a Comment