基于python模拟bfs和dfs代码实例


Posted in Python onNovember 19, 2020

BFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


# 广搜
def bfs(graph, start):
  queue = [start] # 先把起点入队列
  visited = set() # 访问国的点加入
  visited.add(start)

  while len(queue):
    vertex = queue.pop(0)
    # 找到队列首元素的连接点
    for v in graph[vertex]:
      if v not in visited:
        queue.append(v)
        visited.add(v)
    # 打印弹出队列的该头元素
    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  bfs(graph, 'A')

A B D I F C H E G
Process finished with exit code 0

DFS

"""
# @Time  : 2020/11/8
# @Author : Jimou Chen
"""


# 深搜
def dfs(graph, start):
  stack = [start]
  visited = set()
  visited.add(start)

  while len(stack):
    vertex = stack.pop() # 找到栈顶元素
    for v in graph[vertex]:
      if v not in visited:
        stack.append(v)
        visited.add(v)

    print(vertex, end=' ')


if __name__ == '__main__':
  graph = {
    'A': ['B', 'D', 'I'],
    'B': ['A', 'F'],
    'C': ['D', 'E', 'I'],
    'D': ['A', 'C', 'F'],
    'E': ['C', 'H'],
    'F': ['B', 'H'],
    'G': ['C', 'H'],
    'H': ['E', 'F', 'G'],
    'I': ['A', 'C']
  }

  dfs(graph, 'E')

E H G F B A I D C
Process finished with exit code 0

总结

很明显一个用了队列,一个用了栈

利用python语言优势,只需改动pop即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Python清空文件并替换内容的实例
Oct 22 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
详解numpy的argmax的具体使用
May 27 Python
python求最大值最小值方法总结
Jun 25 Python
在python中做正态性检验示例
Dec 09 Python
Python socket聊天脚本代码实例
Jan 02 Python
python lambda函数及三个常用的高阶函数
Feb 05 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 Python
python中有帮助函数吗
Jun 19 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 Python
Python 多进程、多线程效率对比
Nov 19 #Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 #Python
Pytorch实验常用代码段汇总
Nov 19 #Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 #Python
python基于pygame实现飞机大作战小游戏
Nov 19 #Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 #Python
python3 os进行嵌套操作的实例讲解
Nov 19 #Python
You might like
PHP自定义大小验证码的方法详解
2013/06/07 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
再谈javascript原型继承
2014/11/10 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
AngularJS 模块化详解及实例代码
2016/09/14 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python实现针对中文排序的方法
2017/05/09 Python
python list元素为tuple时的排序方法
2018/04/18 Python
python 进程的几种创建方式详解
2019/08/29 Python
Python中itertools的用法详解
2020/02/07 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
自荐信模版
2013/10/24 职场文书
成绩单评语
2015/01/04 职场文书
周一问候语大全
2015/11/10 职场文书