深度优先搜索

概念

深度优先搜索和广度优先搜索一样,都是对图进行搜索的算法,目的也都是从起点开始搜索直到到达指定顶点(终点)。深度优先搜索会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条候补路径。

具体而言

步骤1


A为起点,G为终点。一开始我们在起点A上。

步骤2


将可以从A直达的三个顶点B、C、D设为下一步的候补顶点。

步骤3


从候补顶点中选出一个顶点。优先选择最新成为候补的点,如果几个顶点同时成为候补,那么可以从中随意选择一个。

步骤4


此处B、C、D同时成为候补,所以我们随机选择了最左边的顶点。

步骤5


移动到选中的顶点B。此时我们在B上,所以B变为红色,同时将已经搜索过的顶点变为橙色。

步骤6


将可以从B直达的两个顶点E和F设为候补顶点。

步骤7


此时,最新成为候补顶点的是E和F,我们选择了左边的顶点E。

步骤8


移动到选中的顶点E上。

步骤9


将可以从E直达的顶点K设为候补顶点。

步骤10


重复上述操作直到到达终点,或者所有顶点都被遍历为止。

步骤11


这个示例的搜索顺序为A、B、E、K、F、C、H。

步骤12


现在我们搜索到了顶点C。

步骤13


到达终点G,搜索结束。

广度优先搜索与深度优先搜索的区别

广度优先搜索选择的是最早成为候补的顶点,因为顶点离起点越近就越早成为候补,所以会从离起点近的地方开始按顺序搜索;而深度优先搜索选择的则是最新成为候补的顶点,所以会一路往下,沿着新发现的路径不断深入搜索。

代码

题目

剑指offer55_二叉树的深度
题目描述:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:

给定二叉树 [3,9,20,null,null,15,7],


返回它的最大深度 3 。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
# 深度优先搜索
class Solution:def maxDepth(self, root):if root is None: return 0 else: left_height = self.maxDepth(root.left) right_height = self.maxDepth(root.right) return max(left_height, right_height) + 1 

深度优先搜索python相关推荐

  1. 常用算法2 - 广度优先搜索 深度优先搜索 (python实现)

    1. 图 定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 简单点的说:图由节点和边组成.一 ...

  2. 深度优先搜索-Python

    基本思路: 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问: (3)若此时图中尚有顶 ...

  3. python实现深度优先搜索_python中的深度优先搜索算法

    假设我有一个函数,它接受一个输入($x iui$),然后经过一个循环并生成一系列输出($x{I,j}$).然后,每个输出可以再次作为同一函数的输入,从而产生更多的输出($x{i,j,k}$).我试图通 ...

  4. 人工智能学习:python实现迭代加深的深度优先搜索

    人工智能学习:python实现深度优先搜索算法 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 python版本:3.5 开发 ...

  5. 深度优先搜索及python实现围棋“吃子”

    文章目录 前言 一."吃子"和"气" 1."吃子"和"气"的概念 2.问题转化 二.深度优先搜索 1.表示方法 2.深度 ...

  6. 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】

    文章目录 一.实验内容 二.深度优先搜索和广度优先搜索总结 1.深度优先搜索算法 2.广度优先搜索算法 三.实验代码和用于测试的迷宫 1.实验代码 2.测试迷宫 2.1 maze1.txt 2.2 m ...

  7. 深度优先搜索 python_黄哥Python:图深度优先算法(dfs)

    深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所在边都己被探寻过,搜索将回溯到发现 ...

  8. python 围棋按照坐标查找棋子_深度优先搜索及python实现围棋“吃子”

    前言 "吃子"是围棋最基本的规则之一,但在编写围棋游戏要如何实现?深度优先搜索可以解决这个问题.本文分享的是个人使用深度优先搜索算法及python语言实现"吃子" ...

  9. 使用动态规划和深度优先搜索解决TSP问题,python编写

    参考: 1)https://www.jianshu.com/p/a66e3166569b 2)https://www.cnblogs.com/youmuchen/p/6879579.html 一使用动 ...

最新文章

  1. 2020 AI产业图谱启动,勾勒中国AI技术与行业生态
  2. 线下活动【西安站】用Leangoo做Scrum敏捷开发实战课(免费)
  3. c++ union内存
  4. 使用SQLmap对dvwa进行SQL注入测试
  5. MyBatis Plus Generator——MyBatis Plus代码生成器DEMO
  6. MongoDB作为windows服务来安装-2
  7. 服务器生成文件怎么配置路径,npm run build生成的文件如何部署到服务器上
  8. Sublime Text3 多行合并为一行
  9. ai字体素材网站_综合网站大全,字体、设计、图片各种素材管够,资源丰富你懂得...
  10. Vector Packet Processing(VPP) (一)简介
  11. excel 数据透视表完成分类汇总
  12. 一级倒立摆matlab仿真,一级倒立摆的Simulink仿真
  13. 通信upf是什么意思_管理UPF的方法、装置及系统与流程
  14. 从微信打开链接不能正常上下滑动
  15. 自己怎么开发一个软件app、如何开发一个app系统软件?
  16. U盘检测-linux+QT
  17. 新老域名更替时的页面跳转
  18. vue H5app plus调取手机相册,限制图片大小,图片转base64
  19. 使用Vue快速开发单页应用
  20. python京东预约抢购_Python实现京东秒杀功能代码

热门文章

  1. Python入门教程(一)
  2. react全家桶从0搭建一个完整的react项目(react-router4、redux、redux-saga)
  3. React项目搭建命令
  4. 惠动女神 | 三八节云和恩墨福利已派送, 请查收
  5. JavaScript内存泄露的4种方式及如何避免
  6. ASP.NET中使用JObject和JArray解析Json数据
  7. Old Bill(枚举)
  8. Win11 22623.891更新了什么?
  9. 让人坚强起来的励志经典语录
  10. 使用ADAM将Oracle数据库迁移至阿里云数据库PolarDB