图的邻接矩阵、邻接表遍历(python实现)(递归与非递归)(dfs bfs)

本文介绍了图的两种存储方式——邻接矩阵和邻接表,并提供了Python代码实现图的深度优先搜索(DFS)和广度优先搜索(BFS)遍历。通过递归和非递归方法展示了DFS,同时使用队列实现了BFS。此外,还讨论了如何计算图中每个顶点的度。

图的python实现


图的储存

1.邻接矩阵
2.邻接表

图的遍历

DFS

递归与非递归


BFS

递归非递归


代码实现


图的邻接矩阵的遍历


"""
author:Anderson
data:2020-11-13
图的邻接矩阵的遍历(递归与非递归)
"""

class GraphAX:
    def __init__(self, vertx, mat):  # vertx 顶点表;mat邻接矩阵
        self.vnum = len(vertx)
        self.vertx = vertx
        self.mat = mat  # [mat[i][:] for i in range(vnum)]


def creat_matrix():
    nodes = ['v0', 'v1', 'v2', 'v3', 'v4']
    matrix = [[0, 1, 0, 1, 0],
              [1, 0, 1, 0, 1],
              [0, 1, 0, 1, 1],
              [1, 0, 1, 0, 0],
              [0, 1, 1, 0, 0]]
    mygraph = GraphAX(nodes, matrix)
    return mygraph


def DFS1(graph, cur_vertx_indx):  # 递归方式
    global visited_list
    v = graph.vertx[cur_vertx_indx]
    print(v, end=' ')
    visited_list[cur_vertx_indx] = 1
    w = []
    for i in range(graph.vnum):
        if graph.mat[cur_vertx_indx][i] == 1 and visited_list[i] == 0:
            w.append(i)
    if len(w) != 0:
        for i in range(len(w)):
            a = w[i]
            if visited_list[a] == 0:
                DFS1(graph, a
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值