From d740d41ea6a8933a7d74b04ca24b1497f7ae2621 Mon Sep 17 00:00:00 2001 From: wuliaozhiji Date: Sun, 6 Mar 2022 19:46:34 -0500 Subject: [PATCH] [+] Prep8 get_connected_component --- practice/prep8.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/practice/prep8.py b/practice/prep8.py index 19680e2..60889e5 100644 --- a/practice/prep8.py +++ b/practice/prep8.py @@ -211,8 +211,33 @@ class _Vertex: 2. This method must be recursive, and will have an implicit base case: when all vertices in self.neighbours are already in visited. 3. Use a loop accumulator to store a set of the vertices connected to self. + + >>> g = Graph() + >>> for i in range(0, 7): + ... g.add_vertex(i) + >>> g.add_edge(0, 1) + >>> g.add_edge(1, 2) + >>> g.add_edge(1, 3) + >>> g.add_edge(2, 3) + >>> g.get_connected_component(1) == {0, 1, 2, 3} + True + >>> g.add_edge(4, 0) + >>> g.get_connected_component(0) == {0, 1, 2, 3, 4} + True + >>> g.get_connected_component(5) + {5} + >>> g._vertices[5].get_connected_component({g._vertices[5]}) + set() + >>> g._vertices[6].get_connected_component(set()) + {6} """ - # TODO: implement this method + if self in visited: + return set() + visited.add(self) + nums = {self.item} + for u in self.neighbours: + nums = nums.union(u.get_connected_component(visited)) + return nums if __name__ == '__main__':