数据结构与算法:图的邻接矩阵与遍历

#!/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@Author  : heyw
@Contact : he_yuanwen@126.com
@Time    : 2020/2/28 14:08
@Software: PyCharm
@FileName: Graph.py
"""

# 图的邻接矩阵
G = [
    {1, 2, 3},  # 0
    {0, 4, 6},  # 1
    {0, 3},  # 2
    {0, 2, 4},  # 3
    {1, 3, 5, 6},  # 4
    {4, 7},  # 5
    {1, 4},  # 6
    {5, }
]

print("G:",G)


# 深度优先遍历
def dfs(G, v):
    visited = set()
    s = [v]
    while s:
        u = s.pop()
        if u not in visited:
            print(u, end=" ", flush=True)
            visited.add(u)
            s.extend(G[u])  # 队列的添加方式


print("DFS:",end='')
dfs(G, 0)


# 广度优先遍历
def bfs(G, v):
    queue = [v]
    visited = {v}
    while queue:
        node = queue.pop(0)
        print(node, end=" ", flush=True)
        for u in G[node]:
            if u not in visited:
                visited.add(u)
                queue.append(u)


print("\nBFS:", end='')
bfs(G, 0)
G: [{1, 2, 3}, {0, 4, 6}, {0, 3}, {0, 2, 4}, {1, 3, 5, 6}, {4, 7}, {1, 4}, {5}]
DFS:0 3 4 6 1 5 7 2 
BFS:0 1 2 3 4 6 5 7 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值