Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Create 261-Graph-Valid-Tree.java
  • Loading branch information
adityadmahale authored Jul 7, 2022
commit 6414bf685d8924c07f5508991dba61aaf9d85ea8
40 changes: 40 additions & 0 deletions java/261-Graph-Valid-Tree.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
public class Solution {

private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();

public boolean validTree(int n, int[][] edges) {
if (n == 0 || n == 1) return true;

if (edges.length == 0) return false;

for (var edge: edges) {
var node1 = edge[0];
var node2 = edge[1];
adjacencyList.putIfAbsent(node1, new ArrayList<>());
adjacencyList.putIfAbsent(node2, new ArrayList<>());
adjacencyList.get(node1).add(node2);
adjacencyList.get(node2).add(node1);
}

Set<Integer> visited = new HashSet<>();

return depthFirstSearch(0, -1, visited) && visited.size() == n;
}

private boolean depthFirstSearch(int node, int previous, Set<Integer> visited) {
if (visited.contains(node))
return false;

visited.add(node);

for (var neighbor: adjacencyList.get(node)) {
if (neighbor == previous)
continue;

if (!depthFirstSearch(neighbor, node, visited))
return false;
}

return true;
}
}