Skip to content

Commit 45b91fd

Browse files
committed
Add function , which is to find all the vertices of one vertex given the specific degree by using broad first search policy
1 parent 53e14e5 commit 45b91fd

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# -*- coding:utf-8 -*-
2+
3+
4+
5+
from collections import deque
6+
from graph import Undigraph
7+
8+
def find_vertex_by_degree(graph, s, degree):
9+
if len(graph) <= 1:
10+
return []
11+
if degree == 0:
12+
return [s]
13+
d_vertices = []
14+
queue = deque()
15+
prev = [-1] * len(graph)
16+
visited = [False] * len(graph)
17+
visited[s] = True
18+
queue.append(s)
19+
while len(queue) > 0:
20+
sz = len(queue)
21+
for i in range(sz):
22+
v = queue.popleft()
23+
for adj_v in graph[v]:
24+
if not visited[adj_v]:
25+
prev[adj_v] = v
26+
visited[adj_v] = True
27+
queue.append(adj_v)
28+
degree -= 1
29+
if degree == 0 and len(queue) != 0:
30+
return queue
31+
32+
33+
if __name__ == '__main__':
34+
g = Undigraph(8)
35+
g.add_edge(0, 1)
36+
g.add_edge(0, 3)
37+
g.add_edge(1, 2)
38+
g.add_edge(1, 4)
39+
g.add_edge(2, 5)
40+
g.add_edge(3, 4)
41+
g.add_edge(4, 5)
42+
g.add_edge(4, 6)
43+
g.add_edge(5, 7)
44+
g.add_edge(6, 7)
45+
print(find_vertex_by_degree(g, 0, 4))

0 commit comments

Comments
 (0)