DFS与BFS的区别

DFS与BFS的区别

只有DFS不可以找到最短路径吗

DFS当然也可以找到最短路径,但是时间复杂度也是O(n),但是实际上比BFS低效的很多,DFS是依靠递归的堆栈记录走过的路径的,要找到路径必须把二叉树中的所有叉都走完,然后才可以找出最短路径,但是BFS是一步步起头并进的,可以在没有遍历完整棵树的情况下就可以找出最短路径,这其实就是层序遍历,形象的来说DFS是线,BFS是面,BFS是集体行动,DFS是线

BFS与DFS的使用场景

BFS虽然可以找到最短距离但是空间复杂度高,而DFS的空间复杂度较低

还看刚才我们处理的二叉树的例子,假设给你的这颗二叉树是满二叉树,节点数量为N,对于DFS算法来说,空间复杂度无非就是递归堆栈,在最坏的情况下顶多就是数的高度O(logN),但是对于BFS算法,队列中每次都会存储二叉树一层的节点,这样最坏的情况空间复杂度就是数最小层节点的数量,也就是N/2,用Big O 表示的话就是O(N)
由此来看BFS还是有代价的,一般来是在找最短路径的时候使用BFS,其他情况使用DFS多一些,因为简单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值