from collections import deque
friends = {}
friends["my_friend"] = ["李", "吴", "徐"]
friends["李"] = ["潘O", "孟"]
def search(name):
people = deque()
people += friends[name]
searched = []
while people:
person = people.popleft()
if people not in searched:
if person[-1] == "O":
print("Yes! He is %s" % person)
else:
try:
people += friends[person]
searched.append(person)
except KeyError:
continue
search("my_friend")
该算法可以找到双子峰到金门大桥的最短路径(关系最短,并非路程最短)
也可以搜索到是否存有金门大桥
该算法会先搜索太阳,如果太阳不符合将会把太阳的子关系加入到队尾,在搜索完全部太阳后,再搜索二度关系,进而三度关系