G1= {
'A' : ['B','C','D'],
'B' : ['A','E','F'],
'C' : ['A','D','F','G'],
'D' : ['A','C','G'],
'E' : ['B'],
'F' : ['B','C'],
'G' : ['C','D']
}
#bfs似乎需要创建队列(先进先出)
def bfs(start,G):
queue=[]#建立一个空队列
visit=[]#确认是否进入过queue;
queue.append(start)#起始点加入
visit.append(start)#表示加入queue的结点
while queue:#当队列不为空
#print(queue)
node=queue.pop(0)#第一个元素出来
nodes=G[node]#与元素连接的元素
for i in nodes:
if i not in visit:
queue.append(i)
visit.append(i)
print(node,end='\t')
#bfs似乎需要创建stack(先进后出)
def dfs(start,G):
stack=[]
visit=[]
stack.append(start)
visit.append(start)
while stack:
#print(stack)
node=stack.pop()#最后一个走
nodes=G[node]
#有关联的继续搜索
for i in nodes:
if i not in visit:
stack.append(i)
visit.append(i)
print(node,end='\t')
if __name__=="__main__":
print("BFS算法的搜索结果是:",end='')
bfs('A',G1)
print()#换行
print("DFS算法的搜索结果是:",end='')
dfs('A',G1)