基于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删除文件示例分享
Jan 28 Python
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Scrapy的简单使用教程
Oct 24 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
python绘制玫瑰的实现代码
Mar 02 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 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 cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
前端性能优化及技巧
2016/05/06 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
AngularJS国际化详解及示例代码
2016/08/18 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
redis之django-redis的简单缓存使用
2018/06/07 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python之修改图片像素值的方法
2019/07/03 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
司法建议书范文
2014/05/13 职场文书
改革共识倡议书
2014/08/29 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书