首页 > 编程知识 正文

dfs序列和bfs序列,dfs算法经典应用

时间:2023-05-06 01:29:05 阅读:156749 作者:2690

图解BFS算法和DFS算法BFS算法构想实现过程Python码实现DFS算法构想实现过程Python码实现

BFS算法

BFS与树的分层遍历过程类似,它从根节点开始,沿树的宽度遍历树的节点。 如果所有节点都被访问,算法将中止。

放弃空间改变时间。

算法思路队列(先进先出)

1 .创建空队列queue (用于存储节点)和空列表visit (用于存储已访问的节点)

2、在queue和visit中依次添加起点和邻点

3、对队列中最先进入的节点进行poo,从图中获取该节点的邻接点

4、邻点不在visit时,将该邻点添加到queue和visit

5、出现输出pop的节点

6、重复3、4、5直到队列为空

实现过程如图所示,从a开始

1、a排队

2、a从队列出来时,a的相邻节点b、c、d进入队列

3、b从队列出来时,b的相邻节点a、e、f中未排队的e、f进行排队

4、c从队列出来时,c的相邻节点a、d、f、g、其中没有排队的g进入队列

5、d出列时,d的相邻节点a、c、g都进了列

6、出了e列,相邻节点都进了列

7、出了f列,相邻节点都进了列

8、出了g列,相邻节点都进了列

结果: A B C D E F G

Python代码的安装用词典结构表示

graph={ 'A' : ['B ',' c ',' D'],' B' : ['A ',' e ',' F'],' C' : ['A ',' d ',' f '

defb fs (开始, graph ) : queue=[ ] visit=[ ] queue.append (start ) visit.append (start ) whilequeue3360node=queue.pop(0)

DFS算法DFS沿树的深度遍历树的节点,

选择一条路走到最后,追溯所有子节点,达到全局搜索的目的。

算法思路栈(先进后出)

与BFS相似,只是有点变化

1、制作空的堆栈stack (为了存储节点)和空的列表visit (为了存储访问的节点)

2、将起点和邻点依次添加到stack和visit

3、最后进入poo堆栈的节点从图中获取其节点的邻接点

4、邻接点不在visit时,将该邻接点添加到stack和visit

5、出现输出pop的节点

6、重复3、4、5直到堆栈清空

实现过程如图所示,从a开始

1、a进栈

2、a出栈时,a的相邻节点b、c、d进入栈

3、d离开堆栈时,d的相邻节点a、c、g中没有进入堆栈的g进入堆栈

4、g离开堆栈时,g的相邻节点c、d已经进入了堆栈

5、c离开堆栈时,c的邻接节点a、d、f、g中没有进入堆栈的f进入堆栈

6、离开f栈,相邻节点已进入栈

7、走出b栈,相邻节点e进入栈

8、出e栈

结果: A D G C F B E

Python代码是graph={ 'A' : ['B ',' c ',' D'],' B' : ['A ',' e ',' F'],' C' : ['A,' d ] graph ) 3360stack=[]visit=[] stack.append(start ) visit.append (start ) while stack: node=stack.pop ) nop foriinnodes 3360 ifinotinvisit 3360 ststats

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。