深度优先搜索和广度优先搜索

深度优先的思想是先记住当前的起点,然后选定一个方向一条道走到黑,若失败则回到起点再选定另外一个方向走到黑。

广度优先的思想是记住当前的起点,然后选定各个方向的相邻点作为新的起点,再继续。


可以看出,深度优先和广度优先都需要记住当前的起点,不同的是深度优先每次只需要记住一个方向的相邻点,广度优先则要记住所有方向的相邻点。

如下图:


对于深度优先来说:

选定1为当前节点,将节点1所有方向的节点进行保存,(此时存储2345)

选定2为当前节点(将节点2取出),将节点2所有方向的节点进行保存。(此时存储34567)

选定6为当前节点(将节点6取出),没有相邻节点了,在这里已经走到头,需要回头。(此时存储3457)

选定7为当前节点(将节点7取出),7没有相邻节点,在这里已经走到头,需要回头(此时存储345)

选定3为当前节点...

从上面可以看出,先存储的节点后取出,这是典型的栈数据结构,可以使用栈进行保存数据也可以使用递归算法。


对于广度优先来说:

选定1为当前节点,将节点1所有方向的节点保,(此时存储2345)

选定2为当前节点(将节点2取出),将节点所有方向相邻节点保存(此时存储34567)

选定3为当前节点(将节点3取出),将节点所有方向相邻节点保存(此时存储4567)

选定4为当前节点(将节点4取出),将节点4所有方向相邻节点保存(此时存储5678)

选定5为当前节点(将节点5取出),将节点所有方向相邻节点保存(此时存储678)

选定6为当前节点...

从上面可以看出,先存储的节点先取出,这是典型的队列数据结构,所以可以使用队列进行保存数据。。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值