深度优先搜索python

article/2025/9/13 1:37:47

深度优先搜索

概念

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

具体而言

步骤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 

http://chatgpt.dhexx.cn/article/5X0Lhcsi.shtml

相关文章

DFS——深度优先搜索

什么是DFS DFS,中文名深度优先搜索,是一种图的搜索方式,本质上是一种递归。 dfs相当自由,学dfs可能最高境界就和打太极似的,无招胜有招 DFS的经典应用: 1.全排列 虽然感觉没有贴题目的必要 这应该是大多数d…

算法详解之深度优先搜索算法

14天阅读挑战赛 文章目录 1、深度优先搜索(Depth-First Search,DFS)介绍2、深度优先搜索算法思想3、深度优先搜索算法步骤:4、深度优先搜索算法的应用 1、深度优先搜索(Depth-First Search,DFS&#xff09…

第七章:深度优先搜索

不撞南墙不回头-深度优先搜索 广度优先搜索BFS是每次将当前状态能够一步拓展出的所有状态,全部拓展出来依次存入队列。而深度优先搜索是将当前状态按照一定的规则顺序,先拓展一步得到一个新状态,再对这个这个新状态递归拓展下去。如果无法拓…

Java实现深度优先搜索

Java实现深度优先搜索 图的遍历 图的遍历就是访问图中的每个节点并且每个节点只访问一次。但图中有那么多节点,要如何进行访问就是一个问题,所以我们需要有特定的策略来进行访问这些节点。图的访问策略一般有两种:深度优先搜索和广度优先搜…

深度优先搜索

深度优先搜索: 深度优先搜索是对先序遍历的一般化。我们从某个节点开始,先处理,并将标记为已知,然后任意选择的一个邻接顶点,对其进行深度优先搜索,这样就递归的遍历了图的所有顶点。当图中有圈时&#xf…

【基础知识】一文看懂深度优先算法和广度优先算法

概览 先上个图 现在我们要访问图中的每个节点,即图的遍历。 图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次&#xff…

深度优先搜索(DFS),看这一篇就够了。

一,定义: 深度优先搜索的思路和树的先序遍历很像,下面是百度百科上的定义: 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v; (2)依次从…

Python实现深度优先遍历(DFS)和广度优先遍历(BFS)

一,简介 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在 leetcode&am…

算法数据结构——图的遍历之深度优先搜索算法(Depth First Search)

1. 深度优先搜索简介 深度优先搜索算法(Depth First Search):英文缩写为 DFS。是一种用于搜索树或图的算法。所谓深度优先,就是说每次都尝试向更深的节点走。 深度优先搜索采用了回溯思想,该算法沿着树的深度遍历树的节…

【新书速递】实用安全多方计算导论

安全多方计算(MPC)是解决数据安全与隐私保护问题的关键安全数据交换技术,近年来发展迅速,但由于MPC涉及复杂的密码学和工程实现技术,行业长期缺乏同时具备MPC研究、应用和实现能力的综合性人才,这阻碍了MPC…

百万富翁问题--安全多方计算

百万富翁问题—安全多方计算 是由图灵奖获得者姚期智提出的。 有A、B两个富翁,A资产i亿元,B资产j亿元,i、j均在0-10范围内,在互不让对方知道自己资产的情况下,比较A和B的资产谁多谁少。 那么如何去比较呢?…

隐私保护技术之安全多方计算

安全多方计算(Secure Multi-Party Computation,SMPC)用于解决一组互不信任的参与方各自持有秘密数据, 协同计算一个既定函数的问题。安全多方计算在保证参与方获得正确计算结果的同时,无法获得计算结果之外的任何信息。 在整个计算过程中&…

基于同态加密体制的安全多方计算

本文首发公众号VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。有兴趣的小伙伴们,欢迎关注。 安全多方计算(Secure Mu…

多方安全计算

说明,本文是转载的,个人觉得作者讲解清晰明了,收录用于学习,原文链接:https://blog.csdn.net/yuxinqingge/article/details/104588197。 如今,互联网已经完成了从IT时代向DT时代转变,数据已经成…

多方安全计算MPC

1.多方安全计算的价值 MPC是密码学的一个重要分支,旨在解决一组互不信任的参与方之间保护隐私的协同计算问题,为数据需求方提供不泄露原始数据前提下的多方协同计算能力。 在目前个人数据毫无隐私的环境下,对数据进行确权并实现数据价值显得…

安全多方计算(MPC)

MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。 根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC 1)安全两方&a…

安全多方计算之二:一文搞懂百万富翁问题

百万富翁问题 1. 解决方案2. 协议描述3. 协议说明4. 协议举例5. 协议扩展 两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方及其他第三方知道自己财富的任何信息,这是由中国计算机科学家、2000年图灵奖获得者姚启智教授于1982年在论文《…

安全多方计算-入门学习笔记(三)

四、基于非噪音的安全多方计算介绍 1概念 非噪音方法一般是通过密码学方法将数据编码或加密,得到一些奇怪的数字,而且这些奇怪的数字有一些神奇的性质,比如看上去很随机但其实保留了原始数据的线性关系,或者顺序明明被打乱但人们…

基于隐私保护的安全多方计算区块链融合技术的智能合约

安全多方计算与区块链的融合技术 SMPC-安全多方计算综述安全的定义安全模型SMPC效率问题 区块链应用:智能合约智能合约的问题SMPC需求引入 基于SMPC的智能合约辅助:MPI协议-效率提升 SMPC-安全多方计算综述 随着物联网、移动计算、大数据、云计算的快速…

安全多方计算之GMW协议

安全多方计算之GMW协议 一、背景 论文原文《How to play any mental game》。作者:Micali S, Goldreich O, Wigderson A. 发表在:Proceedings of the Nineteenth ACM Symp on Theory of Computing, STOC. GMW协议可以同时适用在布尔电路和算术电路&am…