Question 3 Bipartite
class Solution {
public boolean isBipartite(List<GraphNode> graph) {
Map<GraphNode, Integer> visited = new HashMap<>();
for (GraphNode node: graph) {
if (visited.containsKey(node)) {
continue;
}
if (!bfs(node, visited)) {
return false;
}
}
return true;
}
private boolean bfs(GraphNode node, Map<GraphNode, Integer> visited) {
Deque<GraphNode> queue = new ArrayDeque<>();
queue.offer(node);
visited.put(node, 1);
while(!queue.isEmpty()) {
GraphNode curNode = queue.poll();
int curGroup = visited.get(curNode);
int neiGroup = - curGroup;
for (GroupNode nei: curNode.neighbors) {
if (visited.containsKey(nei)) {
if (visited.get(nei) == curGroup) {
return false;
}
else {
visited.put(nei, neiGroup);
queue.offer(nei);
}
}
}
}
return true;
}
}PreviousQuestion 2 Number of connected Components in an Undirected GraphNextQuestion 1 Graph Valid Tree
Last updated