输入数据
示例代码
#include <iostream>
#include <queue>
#include <stack>
#include <vector>
#include <set>using namespace std;struct Node {int val;vector<Node*> nexts;Node(int v) : val(v){}
};
using pNode = Node*;void InitTree(pNode &root)
{root = new Node(1);Node *n1 = new Node(2);n1->nexts.push_back(new Node(4));n1->nexts.push_back(new Node(5));root->nexts.push_back(n1);Node *n2 = new Node(3);n2->nexts.push_back(new Node(6));n2->nexts.push_back(new Node(7));  root->nexts.push_back(n2);
}// 广度优先搜索,使用队列实现
void Bsf(Node *root)
{if (root == nullptr) {return;}set<Node*> visited;queue<Node*> q;q.push(root);visited.insert(root);while (!q.empty()) {Node *n = q.front();q.pop();cout << n->val << '\t';for (Node *next : n->nexts) {if (!visited.count(next))  {q.push(next);visited.insert(next);}}}
}
// 深度优先搜索,使用栈实现
void Dsf(Node *root)
{if (root == nullptr) {return;}set<Node*> visited;stack<Node*> s;s.push(root);visited.insert(root);while (!s.empty()) {Node *n = s.top();s.pop();cout << n->val << '\t';for (Node *next : n->nexts) {if (!visited.count(next)) {s.push(next);visited.insert(next);}}}
}int main()
{Node *root;InitTree(root);Bsf(root);cout << endl;Dsf(root);cout << endl;return 0;
}
输出

g++ -std=c++11 .\Search.cpp
.\a.exe
1 2 3 4 5 6 7
1 3 7 6 2 5 4

广度优先搜索(BSF)和深度优先搜索(DSF)示例相关推荐

  1. matlab bfs函数,matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)

    如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...

  2. 算法训练营 搜索技术(深度优先搜索)

    回溯法 回溯法指从初始状态出发,按照深度优先搜索的方式,根据产生子节点的条件约束,搜索问题的解,当发现当前节点不满足求解条件时,就回溯,尝试其他路径. 回溯法是一种"能进则进,进不了就换,换 ...

  3. 搜索专题之深度优先搜索(DFS)

    什么是DFS? 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问: (3)若此时图中尚 ...

  4. 深度优先搜索遍历与广度优先搜索遍历

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 深度优先 ...

  5. 图的广度优先搜索(bfs)以及深度优先搜索(dfs)

    1.前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次. 但是图的遍历相对树而言要更为复杂.因为图中的任意顶点都可能与其他顶点相邻,所以在图的遍历中 ...

  6. 广度优先搜索与深度优先搜索

    广度优先搜索(宽度优先搜索,BFS)和深度优先搜索(DFS)算法的应用非常广泛,本篇文章主要介绍BFS与DFS的原理.实现和应用. 深度优先搜索 图的深度优先搜索(Depth First Search ...

  7. 深度优先搜索(DFS)与广度优先搜索(BFS)算法详解

    深度优先搜索(DFS)与广度优先搜索(BFS)详解 1.广度优先搜索算法 1.1.前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次. 但是图的遍历 ...

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

    深度优先搜索和广度优先搜索 ​ 在人工智能的运筹学的领域中求解与图相关的应用中,这两个算法被证明是非常有用的,而且,如需高效地研究图的基本性质,例如图的连通性以及图是否存在环,这些算法也是必不可少的. ...

  9. 无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)

    一.无向图 1.1 图的相关术语 相邻顶点: 当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并且称这条边依附于这两个顶点. 度: 某个顶点的度就是依附于该顶点的边的个数. 子图: 是一幅图的所 ...

最新文章

  1. spacy库的安装与使用_Python 安装、使用第三方库的一些经验
  2. Linux设备驱动开发-linux驱动中的阻塞访问方式
  3. oracle 查询不能重复,oracle – 如何防止在选择查询中选择重复行?
  4. python numpy库是第三方库吗_浅谈python的第三方库——numpy(终)
  5. Linux里面nginx显示Hello,Nginx得知——Hello World模
  6. quartz 每30秒执行一次_Net Core 使用 Quartz
  7. 不编程也开发13个无需编程的iOS开发工具
  8. gpu版本的torch安装
  9. 网上测试性格的软件依据是什么意思,(观点)mbti性格测试如此流行,它有科学依据吗?...
  10. win10激活方法 电脑病毒和防威胁按键是灰色的,密钥无效的,无法激活的时候怎么强制激活电脑系统
  11. oracle修改asm参数文件,修改asm中的spfile参数
  12. php微信支付分取消订单,PHP实现微信支付和退款
  13. 17.12.2B组总结
  14. 将ubuntu光盘作为安装源_从光盘安装ubuntu
  15. Android移动应用开发 多功能平台app
  16. C/C++ 延时函数 (标准库)
  17. word论文格式管理和孤行控制
  18. Android App 保活之 ADJ 算法
  19. 电脑版泰拉瑞亚服务器物品,《泰拉瑞亚》给予物品指令是什么?
  20. 在Vue中Promise.all的使用

热门文章

  1. 无敌破坏王2:大闹互联网在线观看
  2. FileNotFoundError: [Errno 2] No such file or directory:‘image.jpg’
  3. 数据库之postgreSql时间计算,例如获取前一天、后一天等。
  4. 算法设计与分析——分支限界法
  5. java中%3e%3e是什么_python中%3e是什么意思
  6. 2020-2021 年度广东省职业院校技能大赛网络搭建与应用竞赛
  7. ceph报“mon node3 is low on available space”
  8. 【电商运营】你真的了解社交媒体营销(SMM)吗?
  9. 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例
  10. [研究方向]什么是深度学习?它到底有多火?