Python 图的深度优先遍历

本文介绍了如何使用Python实现图的深度优先遍历(DFS)。通过字典存储图结构,递归遍历所有未访问过的顶点,从一个顶点开始,沿着边到达未访问的顶点,直到所有顶点都被访问。具体步骤包括初始化图,以a为起点,按照a->b->c->d->e->f的顺序进行深度优先搜索。
摘要由CSDN通过智能技术生成

使用字典存储下面这个图结构,编写图的遍历算法,对给定图进行深度优先遍历。

在这里插入图片描述
Hint: 结点作为字典的Key,结点的邻居作为字典的Value,从而构成一个图。

递归实现图的深度优先遍历(DFS)

1、字典graph存储图,存储顺序a-z。
2、首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点。(访问的顺序a-z)
3、当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。

def DFS(graph,x,list):   # 递归实现图的深度优先遍历
    i = 0   # 若结点的相邻结点都被遍历,i回到上一个结点
    for y in graph[x]:   # 结点的相邻结点遍历
        i += 1
        if y not in list:   # 如果此节点未被遍历,则加入list
            list.append(y)
            DFS(graph,y,list)   # 递归,继续遍历
        else:
            if i == len(graph[x]):
                return
    return        
result = ''   # 连接最后结果的字符串
graph = {
   'a': ['b', 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值