DFS DBS算法

本文深入探讨了两种常见的图遍历算法——深度优先搜索(DFS)和广度优先搜索(BFS)。DFS适用于寻找所有解,空间效率高,通常使用递归实现;而BFS则适用于找到最优解,需要借助队列保存搜索状态。通过代码模板,解释了DFS和BFS的基本实现,并以二叉树层次遍历为例展示了BFS的应用。此外,还提供了一个使用DFS解决岛屿数量问题的实例,展示了DFS如何处理连通区域。
摘要由CSDN通过智能技术生成

DFS(深度优先搜索 适合搜索全部解  在空间上有优势  因为不用保存搜索过程中的状态)

BFS(广度优先搜索  适合最优解  在空间上需要用一个队列来保存搜索过程)

一般情况下  DFS都是用递归来写算法  BFS需要手动维护一个队列queue

DFS代码-递归写法 模板(记住)

visited=set()

def dfs(node,visited):

visited.add(node)

#process
current node here

for
next_node in node.children():

if
not next_node in visited:

dfs(next
node,visited)

BFS代码模板

def BFS(Graph,start,end):

queue=[]

queue.append([start])

visited.add(start)

while
queue:

node=queue.pop()

visited.add(node)

process(node)

nodes=generate_related_nodes(node)

queue.push(nodes)

#other
processing work

二叉树的层次遍历(解法:BFS)

calss Sulotion{

public
List<List> levelOrder(TreeNode root){

List<List>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值