深度优先搜索

什么是深度优先搜索?

还记得最先接触深度搜索的时候,还是在大一的课堂上,王老师为了向我们这群连门槛还没摸到的傻白甜炫一下技术,写了一个用深度优先搜索为思想核心的自动走迷宫小程序,当时引得大家一众欢呼。我内心也是一阵感叹:“难到这就是传说中的人工智能?这个程序的逻辑应该很麻烦吧”,后来才知道只是实现了一个很简单的深度优先搜索而已,说白了核心思想就是一条路走到底,走不下去了就回退,再判断有没有其他路可走,没了就再回退,直到走完所有的点为止

废话不多说,直接上图演示!!
我们还是遍历上次广度优先搜索的那张图
还是先访问a点,然后我们把a入栈(用栈来实现,主要是方便达到回退的效果)

栈内元素栈顶元素
aa

在这里插入图片描述
接着我们访问b点,b入栈

栈内元素栈顶元素
a,bb

在这里插入图片描述
继续访问b的邻节点,就来到了d,d入栈

栈内元素栈顶元素
a,b,dd

在这里插入图片描述
接着访问d的邻节点,d已经没有能访问的邻节点,此时把d出栈

栈内元素栈顶元素
a,bb

在这里插入图片描述
继续访问没有访问过的b的邻节点,到了f,f入栈

栈内元素栈顶元素
a,b,ff

在这里插入图片描述
继续访问没有访问过的f的邻节点,到了h,h入栈

栈内元素栈顶元素
a,b,f,hh

在这里插入图片描述
下面就不写那么细了,到这里套路大家也懂了
到了g,g入栈

栈内元素栈顶元素
a,b,f,h,gg

在这里插入图片描述
到了c,c入栈

栈内元素栈顶元素
a,b,f,h,g,cc

在这里插入图片描述
到了e,e入栈

栈内元素栈顶元素
a,b,f,h,g,c,ee

在这里插入图片描述
e没有能访问的点了,e出栈

栈内元素栈顶元素
a,b,f,h,g,cc

在这里插入图片描述
c没有能访问的点了,c出栈

栈内元素栈顶元素
a,b,f,h,gg

在这里插入图片描述
g没有能访问的点了,g出栈

栈内元素栈顶元素
a,b,f,hh

在这里插入图片描述
其实我们已经知道结果,没有未访问过的点了,会一直进行出栈操作

在这里插入图片描述
当最后一个节点a出栈,栈空了,我们就把能到达的点都遍历一遍了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值