基于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切换hosts文件代码示例
Dec 31 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
python中altair可视化库实例用法
Jan 26 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 Python
如何用Python搭建gRPC服务
Jun 30 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
详细对比php中类继承和接口继承
2018/10/11 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
Vue组件之Tooltip的示例代码
2017/10/18 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
Python实现统计单词出现的个数
2015/05/28 Python
python使用zip将list转为json的方法
2018/12/31 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
Django框架封装外部函数示例
2019/05/28 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
python文件路径操作方法总结
2020/12/21 Python
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
学校采购员岗位职责
2014/01/02 职场文书
财务会计专业自荐书
2014/06/30 职场文书
女性励志书籍推荐
2019/08/19 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
我的收音机情缘
2022/04/05 无线电
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers