了解BFS和DFS之间的区别

宽度优先搜索

    BFS代表Breadth First Search,是一种基于顶点的技术,用于在图中查找最短路径。它使用先进先出的队列数据结构。在BFS中,一次选中并标记一个顶点,然后其相邻顶点被访问并存储在队列中。它比DFS慢。

        A
       / \
      B   C
     /   / \
    D   E   F

    输出为:

A, B, C, D, E, F
深度优先搜索

    DFS代表Depth First Search,是一种基于边的技术。它使用栈数据结构,执行两个阶段,首先将已访问的顶点推入堆栈,然后如果没有未被访问的顶点,则弹出已访问的顶点。

        A
       / \
      B   C
     /   / \
    D   E   F

    输出为:

A, B, D, C, E, F
BFS vs DFS
序号BFSDFS
1BFS代表宽度优先搜索DFS代表深度优先搜索
2BFS(宽度优先搜索)使用队列数据结构来查找最短路径DFS(深度优先搜索)使用栈数据结构
3BFS更适合搜索更接近给定源的顶点如果有远离源的解决方案,则DFS更适合
4BFS首先考虑所有邻居,因此不适合用于游戏或拼图中的决策树。DFS更适用于游戏或拼图问题。我们做出决定,然后探索有关该决定的所有路径。如果这一决定带来获胜局面,我们将停止。
5当使用邻接表时,BFS的时间复杂度为O(V+E);当使用邻接矩阵时,BFS的时间复杂度为O(V^2),其中V表示顶点,E表示边。当使用邻接表时,DFS的时间复杂度也是O(V+E),当使用邻接矩阵时,DFS的时间复杂度也是O(V^2),其中V表示顶点,E表示边。
什么是二叉树的BFS和DFS?

    通常以两种方式遍历一棵树:

  • 宽度优先遍历
  • 深度优先遍历
    • 中序遍历(左 - 根 - 右)
    • 前序遍历(根 - 左 - 右)
    • 后序遍历(左 - 右 - 根)
      在这里插入图片描述
BFS and DFSs of above Tree

Breadth First Traversal : 1 2 3 4 5

Depth First Traversals:
      Preorder Traversal : 1 2 4 5 3 
      Inorder Traversal  :  4 2 5 1 3 
      Postorder Traversal : 4 5 2 3 1
在额外空间方面有什么区别吗?

    所需的额外空间有所不同。

  1. 水平顺序遍历所需的额外空间为O(w),其中w是二叉树的最大宽度。在水平顺序遍历中,一个接一个的队列存储不同级别的节点。
  2. 深度优先遍历所需的额外空间是O(h),其中h是二叉树的最大深度。在深度优先遍历中,栈(或函数调用栈)存储节点的所有祖先。

    深度(或高度)h处二叉树的最大宽度可以是 2 h 2^h 2h,其中h从0开始。所以节点的最大数目可以在最后一级。最坏的情况发生在二叉树是一个节点数为1,3,7,15…的完美二叉树。最坏情况下, 2 h 2^h 2h的值为Ceil(n/2)。
    平衡二叉树的高度为O(Log n)。最坏的情况发生在倾斜的树上,最坏的情况是高度变为O(n)。
    因此,在最坏的情况下,两者所需的额外空间均为O(n)。但是最坏的情况发生在不同类型的树上。
    从以上几点可以明显看出,当树更平衡时,水平顺序遍历所需的额外空间可能更多,而当树不太平衡时,深度优先遍历所需的额外空间可能更多。

如何选择?
  1. 额外空间可能是一个需要考虑的因素(上面已解释)
  2. 深度优先遍历通常是递归的,递归代码需要函数调用系统开销。
  3. 最重要的一点是,BFS从根开始访问节点,而DFS从叶开始访问节点。所以,如果我们的问题是搜索更接近根的东西,我们更喜欢BFS。如果目标节点靠近叶子,我们会选择DFS。
参考文档

[1]MKS075.Difference between BFS and DFS[EB/OL].https://www.geeksforgeeks.org/difference-between-bfs-and-dfs/,2020-07-03.
[2]Dheeraj Gupta.BFS vs DFS for Binary Tree[EB/OL].https://www.geeksforgeeks.org/bfs-vs-dfs-binary-tree/,2016-12-22.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值