DFS与BFS

DFS:深度优先遍历(Depth First Search)

BFS:广度优先遍历(Breath First Search)

流程区别:

        DFS侧重于深度,即在搜索解空间时会搜索到最后一层,当达到最后一层时发现解不可用会返回上层进行另外一个方向的深层搜索。

        而BFS则是侧重广度,即在搜索时会将该层的所有下一层结果计算出来,然后才进入下一层进行重复操作,类似于层次遍历。

DFSBFS
遍历优先级子节点>兄弟姐妹节点访问兄弟姐妹节点>子节点访问
实现方式堆栈数据结构队列数据结构
内存占用需要更少内存需要更多内存

DFS:

  1. 利用栈实现,将栈头放入栈
  2. 从源节点开始把节点按照深度放入栈,然后弹出
  3. 每弹出一个点,把该节点下一个没有进过栈的邻接点放入栈
  4. 直到栈为空

BFS:

  1. 利用队列实现,将队头放入队列
  2. 从源节点开始依次按照宽度进队列,然后弹出
  3. 每弹出一个节点,就把该节点所有没有进过队列的邻接点放入队列
  4. 直到队列为空
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏大橙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值