From 03c1431b012371fdf63dc0ece4d1450742d8a7fb Mon Sep 17 00:00:00 2001 From: Erika Chikere Date: Thu, 27 Jan 2022 14:47:16 -0800 Subject: [PATCH] Passes all Tests --- graphs/possible_bipartition.py | 35 +++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/graphs/possible_bipartition.py b/graphs/possible_bipartition.py index ca55677..81c7cb2 100644 --- a/graphs/possible_bipartition.py +++ b/graphs/possible_bipartition.py @@ -5,8 +5,37 @@ def possible_bipartition(dislikes): """ Will return True or False if the given graph can be bipartitioned without neighboring nodes put into the same partition. - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(N+E) + Space Complexity: O(N) """ - pass + if not dislikes: + return True + frontier = [0] + visited = {} + group1 = set() + group2 = set() + + while frontier: + current = frontier.pop(0) + + if not dislikes[current]: + if (current+1) not in visited: + visited[current+1] = True + frontier.append(current+1) + + for neigbor in dislikes[current]: + if neigbor not in visited: + visited[neigbor] = True + frontier.append(neigbor) + + if current not in group1: + if neigbor in group2: + return False + group1.add(neigbor) + else: + if neigbor in group1: + return False + group2.add(neigbor) + + return True \ No newline at end of file