本文共 1410 字,大约阅读时间需要 4 分钟。
# 图# 0# / | \# 1 2 - 4# /# 3m = 999999 # 代表没有连接a = [[0, 1, 1, m, 1], # 邻接矩阵表示图 [1, 0, m, 1, m], [1, m, 0, m, 1], [m, 1, m, 0, m], [1, m, 1, m, 0]]n = 5 # 总点数sm = 0 # 访问点计算book = [0] * n # 记录已经访问过的点def dfs(cur): """ :param cur: 当前访问点 :return: """ global sm print('%d' % cur, end=' ') sm = sm + 1 if sm == n: return for i in range(0, n): if a[cur][i] == 1 and book[i] == 0: book[i] = 1 dfs(i)def dfs_non_recursion(cur): """ :param cur: 当前访问点 :return: """ s = [] s.append(cur) # 栈 book[cur] = 1 while len(s) != 0: cur = s.pop() print('%d' % cur, end=' ') for i in range(n-1, -1, -1): # 为了个递归的打印顺序相同 if a[cur][i] == 1 and book[i] == 0: book[i] = 1 s.append(i)def bfs(cur): """ :param cur: 当前访问点 :return: """ q = [] # 队列 q.append(cur) while len(q) != 0: cur = q.pop(0) print('%d' % cur, end=' ') for i in range(0, n): if a[cur][i] == 1 and book[i] == 0: book[i] = 1 q.append(i)if __name__ == "__main__": book[0] = 1 dfs(0) for i in range(n): book[i] = 0 print() dfs_non_recursion(0) for i in range(n): book[i] = 0 print() book[0] = 1 bfs(0)
转载地址:http://kakei.baihongyu.com/