数据结构与算法 Python实现 图

一个关系图,互相连接,通过邻居查找,浪费空间

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)

猜你喜欢

转载自blog.csdn.net/weixin_44865158/article/details/100803706