深度优先遍历算法的非递归实现需要了解深度优先遍历的执行过程,设计一个栈来模拟递归实现中系统设置的工作栈,算法的伪代码描述为:
假设图采用邻接矩阵作为存储结构,具体算法如下:
#include<iostream> #include <queue> using namespace std; #define MAX_NODE 12 bool visited[MAX_NODE] ; int stack[ MAX_NODE] ; queue<int> q; int Matric[MAX_NODE][MAX_NODE] = { {-1,1,1,0,0,0,0,0,0,0,0,0}, {1,-1,1,0,1,1,0,0,0,0,0,0}, {1,1,-1,1,0,0,0,0,0,0,0,0}, {0,0,1,-1,1,0,0,0,0,0,1,1}, {0,1,0,1,-1,0,0,0,0,0,0,0}, {0,1,0,0,0,-1,0,0,0,0,1,0}, {0,0,0,0,0,0,-1,1,1,1,0,0}, {0,0,0,0,0,0,1,-1,0,0,0,0}, {0,0,0,0,0,0,1,0,-1,1,1,0}, {0,0,0,0,0,0,1,0,1,-1,0,1}, {0,0,0,1,0,1,0,0,1,0,-1,0}, {0,0,0,1,0,0,0,0,0,1,0,-1}, }; void DFS( int v) { cout << " v"<< v ; int top = -1 ; visited[v] = true ; stack[++top] = v ; while ( top != -1) { v = stack[top] ; for (int i = 0 ; i < MAX_NODE ; i++) { if (Matric[v][i] == 1 &&!visited[i]) { cout << " v" << i ; visited[i] = true ; stack[ ++top ] = i ; break ; } } if( i == MAX_NODE) { top -- ; } } } void BFS( int v) { int node = 0; q.push(v); visited[v] = true; while( !q.empty()) { node = q.front(); for ( int i = 0; i < MAX_NODE; i++ ) { if ( Matric[node][i] == 1 && !visited[i]) { visited[i] = true; q.push(i); } } cout <<" v" << node; q.pop(); } } void Init() { int i = 0; for ( i = 0; i < MAX_NODE; i++) { visited[i] = false; } } int main() { Init(); DFS( 1 ) ; cout << endl ; Init(); BFS( 1 ); cout << endl; Init(); DFS( 6 ); cout <<endl; return 0 ; }
您还没有登录,请您登录后再发表评论
数据结构DFS深度优先遍历非递归算法实现,是自己编写的,可靠。
使用邻接表表示法创建无向图,然后使用非递归算法进行深度优先遍历和广度优先遍历
这是数据结构图的遍历算法,非递归,深度优先和广度优先搜索都有
主要介绍了JavaScript树的深度优先遍历和广度优先遍历算法,结合实例形式分析了JavaScript树的深度优先遍历、广度优先遍历递归与非递归相关实现技巧,需要的朋友可以参考下
后序遍历的非递归算法要比非递归前序遍历和中序遍历难一些,本文件提供结构和程序以便同行者下载使用,有问题请留言
数据结构课时,c++写的深度优先搜索和广度优先搜索非递归算法,
充分利用kNN查询自身的特点,基于高效的主存索引Δ-tree设计了一种新的kNN查询算法NR_DF_knn_Search,该算法采用非递归方式深度优先搜索Δ-tree中距离查询点较近的叶子节点,能够快速找到较优的kNN候选,更新修剪...
二叉树的深度优先搜索与广度优先搜索的非递归方法实现
可以参考中国大学MOOC电子科技大学,戴波老师的计算机算法与程序设计6.1节内容。文件包括源代码,数据,注释详细。代码实现了深度优先遍历(递归和非递归)、广度优先遍历。
7.24③ 试利用栈的基本操作编写,按深度优先搜索策略 遍历一个强连通图的非递归形式的算法。算法中不规定具 体的存储结构,而将图Graph看成是一种抽象的数据类型。
用邻接矩阵存储的图,深度优先遍历,非递归算法~ 和PRIM 算法的最小生成树
数据结构C语言版二叉树多种遍历算法(前序、中序、后序并且分别有递归和非递归两种,层次遍历)实现.
数据结构中图的深度优先算法 深度优先遍历, 刷过题的朋友应该都很熟悉了,难是不难,但是理解起来还是要费一些... 深度优先遍历的实现方法有递归和非递归两种, 这里我们用可视化的角度,讲解前一种: 递归的深度优先遍历.
2.1课程设计内容 该课题要求以邻接表的方式存储图,输出邻接表,并要求实现图的深度、广度两种遍历。 2.1.1图的邻接表的建立与输出 对任意给定的图(顶点数和边数自...对于深度优先遍历则采用递归或非递归算法来实现。
该程序在VC++2008中编译通过,实现了图的创建,邻接表存储 以及图的广度优先搜索,深度优先搜索
要求:分别给出邻接矩阵和邻接表在某一种图上的创建算法 2、 图的遍历:非递归的深度优先搜索算法、广度优先搜索算法。 3、 图的深度遍历的应用:求无向连通图中的关节点(教材P177-178,算法7.10和7.11) 4、 图的...
对于一个无向连通图,从图中某一顶点出发,...然而图的深度优先搜索(DFS)算法一般采用递归算法来实现,鉴于二叉树遍历算法可以转换为非递归算法来实现,试编写基于DFS的非递归遍历算法的无向图的连通分量的识别程序。
深度优先遍历采用了递归算法,广度优先遍历采用了非递归算法。参考了清华大学出版社的数据结构教材。 在VS C++2010环境下测试通过 如要在VC6.0环境下运行,需将头文件“stdafx.h”去除
算法提要:深度优先遍历过程中,访问某顶点后,该顶点的邻接点中有已访问的顶点且该已访问邻接点不是该顶点的上一级递归出发顶点(即存在回边),则有环。 3.编程题: 建立无向图邻接表存储结构,输出深度和宽度优先...
主要介绍了C++非递归队列实现二叉树的广度优先遍历,实例分析了遍历二叉树相关算法技巧,并附带了两个相关算法实例,需要的朋友可以参考下
相关推荐
数据结构DFS深度优先遍历非递归算法实现,是自己编写的,可靠。
使用邻接表表示法创建无向图,然后使用非递归算法进行深度优先遍历和广度优先遍历
这是数据结构图的遍历算法,非递归,深度优先和广度优先搜索都有
主要介绍了JavaScript树的深度优先遍历和广度优先遍历算法,结合实例形式分析了JavaScript树的深度优先遍历、广度优先遍历递归与非递归相关实现技巧,需要的朋友可以参考下
后序遍历的非递归算法要比非递归前序遍历和中序遍历难一些,本文件提供结构和程序以便同行者下载使用,有问题请留言
数据结构课时,c++写的深度优先搜索和广度优先搜索非递归算法,
充分利用kNN查询自身的特点,基于高效的主存索引Δ-tree设计了一种新的kNN查询算法NR_DF_knn_Search,该算法采用非递归方式深度优先搜索Δ-tree中距离查询点较近的叶子节点,能够快速找到较优的kNN候选,更新修剪...
二叉树的深度优先搜索与广度优先搜索的非递归方法实现
可以参考中国大学MOOC电子科技大学,戴波老师的计算机算法与程序设计6.1节内容。文件包括源代码,数据,注释详细。代码实现了深度优先遍历(递归和非递归)、广度优先遍历。
7.24③ 试利用栈的基本操作编写,按深度优先搜索策略 遍历一个强连通图的非递归形式的算法。算法中不规定具 体的存储结构,而将图Graph看成是一种抽象的数据类型。
用邻接矩阵存储的图,深度优先遍历,非递归算法~ 和PRIM 算法的最小生成树
数据结构C语言版二叉树多种遍历算法(前序、中序、后序并且分别有递归和非递归两种,层次遍历)实现.
数据结构中图的深度优先算法 深度优先遍历, 刷过题的朋友应该都很熟悉了,难是不难,但是理解起来还是要费一些... 深度优先遍历的实现方法有递归和非递归两种, 这里我们用可视化的角度,讲解前一种: 递归的深度优先遍历.
2.1课程设计内容 该课题要求以邻接表的方式存储图,输出邻接表,并要求实现图的深度、广度两种遍历。 2.1.1图的邻接表的建立与输出 对任意给定的图(顶点数和边数自...对于深度优先遍历则采用递归或非递归算法来实现。
该程序在VC++2008中编译通过,实现了图的创建,邻接表存储 以及图的广度优先搜索,深度优先搜索
要求:分别给出邻接矩阵和邻接表在某一种图上的创建算法 2、 图的遍历:非递归的深度优先搜索算法、广度优先搜索算法。 3、 图的深度遍历的应用:求无向连通图中的关节点(教材P177-178,算法7.10和7.11) 4、 图的...
对于一个无向连通图,从图中某一顶点出发,...然而图的深度优先搜索(DFS)算法一般采用递归算法来实现,鉴于二叉树遍历算法可以转换为非递归算法来实现,试编写基于DFS的非递归遍历算法的无向图的连通分量的识别程序。
深度优先遍历采用了递归算法,广度优先遍历采用了非递归算法。参考了清华大学出版社的数据结构教材。 在VS C++2010环境下测试通过 如要在VC6.0环境下运行,需将头文件“stdafx.h”去除
算法提要:深度优先遍历过程中,访问某顶点后,该顶点的邻接点中有已访问的顶点且该已访问邻接点不是该顶点的上一级递归出发顶点(即存在回边),则有环。 3.编程题: 建立无向图邻接表存储结构,输出深度和宽度优先...
主要介绍了C++非递归队列实现二叉树的广度优先遍历,实例分析了遍历二叉树相关算法技巧,并附带了两个相关算法实例,需要的朋友可以参考下