Advertisement
yimengael

Is it a Tree

Mar 8th, 2022
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.71 KB | None | 0 0
  1.     static Boolean is_it_a_tree(Integer node_count, ArrayList<Integer> edge_start, ArrayList<Integer> edge_end) {
  2.         //Build the tree
  3.         Map<Integer, ArrayList<Integer>> adj_list = new HashMap<>();
  4.         for (int node = 0; node < node_count; node++) {
  5.             adj_list.put(node, new ArrayList<Integer>());
  6.         }
  7.         for (int i = 0; i < edge_start.size(); i++) {
  8.             adj_list.get(edge_start.get(i)).add(edge_end.get(i));
  9.             adj_list.get(edge_end.get(i)).add(edge_start.get(i));
  10.         }
  11.        
  12.         //Check whether there exist a cycle or not
  13.         int[] visited = new int[node_count];
  14.         int[] parent = new int[node_count];
  15.        
  16.         for (int node = 0; node < node_count; node++) {
  17.             if (visited[node] == 0) {
  18.                 if (!bfs(node, visited, parent, adj_list)) {
  19.                     return false;
  20.                 }
  21.             }
  22.         }
  23.        
  24.         return true;
  25.     }
  26.    
  27.     static Boolean bfs(int node, int[] visited, int[] parent, Map<Integer, ArrayList<Integer>> adj_list) {
  28.         Queue<Integer> q = new LinkedList<>();
  29.         q.offer(node);
  30.         visited[node] = 1;
  31.         while (!q.isEmpty()) {
  32.             int currNode = q.poll();
  33.             for (int neighbor : adj_list.get(currNode)) {
  34.                 if (visited[neighbor] == 0) {
  35.                     q.offer(neighbor);
  36.                     visited[neighbor] = 1;
  37.                     parent[neighbor] = currNode;
  38.                 } else {
  39.                     if (parent[currNode] != neighbor) {
  40.                         return false; //this means, it is a cycle
  41.                     }
  42.                 }
  43.             }
  44.         }
  45.         return true;
  46.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement