A relationship graph, connect to each other, search through neighbors, waste space
from collections import deque
class Queue(object):
def __init__(self):
self._itme_linked_list = deque()
def __len__(self):
return len(self._itme_linked_list)
def push(self,value):
return self._itme_linked_list.append(value)
def pop(self):
return self._itme_linked_list.popleft()
def bfs(graph,start):
#新建一个消息队列
search_queue = Queue()
#先添添加一个节点
search_queue.push(start)
#创建一个set
searched = set()
#循环队列
while search_queue:
#取出值
cur_node = search_queue.pop()
#这个节点不在set中就添加进去
if cur_node not in searched:
searched.add(cur_node)
#循环图里的节点
for node in graph[cur_node]:
#添加节点
search_queue.push(node)
DFS_SEARCHED = set()
def dfs(graph,start):
#这节点不在set中,就添加进去
if start not in DFS_SEARCHED:
DFS_SEARCHED.add(start)
#循环图,取出相邻的点
for node in graph[start]:
#节点不在set中,就重新递归调用
if node not in DFS_SEARCHED:
dfs(graph,node)