广度优先搜索(BSF)和深度优先搜索(DSF)示例
输入数据
示例代码
#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)示例相关推荐
- matlab bfs函数,matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)
如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...
- 算法训练营 搜索技术(深度优先搜索)
回溯法 回溯法指从初始状态出发,按照深度优先搜索的方式,根据产生子节点的条件约束,搜索问题的解,当发现当前节点不满足求解条件时,就回溯,尝试其他路径. 回溯法是一种"能进则进,进不了就换,换 ...
- 搜索专题之深度优先搜索(DFS)
什么是DFS? 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问: (3)若此时图中尚 ...
- 深度优先搜索遍历与广度优先搜索遍历
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 深度优先 ...
- 图的广度优先搜索(bfs)以及深度优先搜索(dfs)
1.前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次. 但是图的遍历相对树而言要更为复杂.因为图中的任意顶点都可能与其他顶点相邻,所以在图的遍历中 ...
- 广度优先搜索与深度优先搜索
广度优先搜索(宽度优先搜索,BFS)和深度优先搜索(DFS)算法的应用非常广泛,本篇文章主要介绍BFS与DFS的原理.实现和应用. 深度优先搜索 图的深度优先搜索(Depth First Search ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)算法详解
深度优先搜索(DFS)与广度优先搜索(BFS)详解 1.广度优先搜索算法 1.1.前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次. 但是图的遍历 ...
- 深度优先搜索和广度优先搜索
深度优先搜索和广度优先搜索 在人工智能的运筹学的领域中求解与图相关的应用中,这两个算法被证明是非常有用的,而且,如需高效地研究图的基本性质,例如图的连通性以及图是否存在环,这些算法也是必不可少的. ...
- 无向图、深度优先搜索(无向图)、广度优先搜索(无向图)、无向图路径查找(基于深度优先搜索)
一.无向图 1.1 图的相关术语 相邻顶点: 当两个顶点通过一条边相连时,我们称这两个顶点是相邻的,并且称这条边依附于这两个顶点. 度: 某个顶点的度就是依附于该顶点的边的个数. 子图: 是一幅图的所 ...
最新文章
- spacy库的安装与使用_Python 安装、使用第三方库的一些经验
- Linux设备驱动开发-linux驱动中的阻塞访问方式
- oracle 查询不能重复,oracle – 如何防止在选择查询中选择重复行?
- python numpy库是第三方库吗_浅谈python的第三方库——numpy(终)
- Linux里面nginx显示Hello,Nginx得知——Hello World模
- quartz 每30秒执行一次_Net Core 使用 Quartz
- 不编程也开发13个无需编程的iOS开发工具
- gpu版本的torch安装
- 网上测试性格的软件依据是什么意思,(观点)mbti性格测试如此流行,它有科学依据吗?...
- win10激活方法 电脑病毒和防威胁按键是灰色的,密钥无效的,无法激活的时候怎么强制激活电脑系统
- oracle修改asm参数文件,修改asm中的spfile参数
- php微信支付分取消订单,PHP实现微信支付和退款
- 17.12.2B组总结
- 将ubuntu光盘作为安装源_从光盘安装ubuntu
- Android移动应用开发 多功能平台app
- C/C++ 延时函数 (标准库)
- word论文格式管理和孤行控制
- Android App 保活之 ADJ 算法
- 电脑版泰拉瑞亚服务器物品,《泰拉瑞亚》给予物品指令是什么?
- 在Vue中Promise.all的使用
热门文章
- 无敌破坏王2:大闹互联网在线观看
- FileNotFoundError: [Errno 2] No such file or directory:‘image.jpg’
- 数据库之postgreSql时间计算,例如获取前一天、后一天等。
- 算法设计与分析——分支限界法
- java中%3e%3e是什么_python中%3e是什么意思
- 2020-2021 年度广东省职业院校技能大赛网络搭建与应用竞赛
- ceph报“mon node3 is low on available space”
- 【电商运营】你真的了解社交媒体营销(SMM)吗?
- 史上最简单的spark教程第二十三章-运行第一个机器学习Java和Python代码案例
- [研究方向]什么是深度学习?它到底有多火?