c++ 深度优先算法输出树的访问顺序
2017-01-11 00:00
316 查看
输出使用深度优先算法访问树的顺序;
yuanzhen@ubuntu:~/C_script$ cat dfs_two.cpp
#include <vector>
#include <iostream>
#include <cstdlib>
using std::cout;
using std::endl;
using std::vector;
vector<vector<int> > vec;
vector<int> book(13,0);
vector<int> result(13,0);
void show(vector<vector<int> > avec)
{
vector<vector<int> >::const_iterator cit;
vector<int>::const_iterator it;
for(cit=avec.begin(); cit!=avec.end();++cit)
{
vector<int> ivec=(*cit);
for(it=ivec.begin();it!=ivec.end();++it)
{
cout << *it << " ";
}
cout << endl;
}
}
vector<vector<int> > init()
{
int arr[11][2]={{1,2},{1,7},{1,8},{2,3},{2,6},{3,4},{3,5},{8,9},{8,12},{9,10},{9,11}};
vector<vector<int> >avec(13, vector<int>(13,0));
for(int i=1;i<13;++i)
avec[i][0]=i;
for(int j=1;j<13;++j)
avec[0][j]=j;
for(int k=0;k<11;++k)
{
int x=arr[k][0];
int y=arr[k][1];
avec[x][y]=1;
avec[y][x]=1;
}
return avec;
}
void dfs(int node, int step)
{
cout << node << endl;
for(int i=1;i<13;++i)
{
if(vec[node][i]==1 && book[i]==0)
{
book[i]=1;
dfs(i, step+1);
book[i]=0;
}
}
}
int main(int argc, char** argv)
{
vec=init();
show(vec);
book[1]=1;
dfs(1,1);
}
##################################
结果
0 1 2 3 4 5 6 7 8 9 10 11 12
1 0 1 0 0 0 0 1 1 0 0 0 0
2 1 0 1 0 0 1 0 0 0 0 0 0
3 0 1 0 1 1 0 0 0 0 0 0 0
4 0 0 1 0 0 0 0 0 0 0 0 0
5 0 0 1 0 0 0 0 0 0 0 0 0
6 0 1 0 0 0 0 0 0 0 0 0 0
7 1 0 0 0 0 0 0 0 0 0 0 0
8 1 0 0 0 0 0 0 0 1 0 0 1
9 0 0 0 0 0 0 0 1 0 1 1 0
10 0 0 0 0 0 0 0 0 1 0 0 0
11 0 0 0 0 0 0 0 0 1 0 0 0
12 0 0 0 0 0 0 0 1 0 0 0 0
------------------------------
1 2 3 4 5 6 7 8 9 10 11 12
相关文章推荐
- 【数据结构】以邻接矩阵作存储结构,求连通分量的个数,设计算法求图G的深度,深度优先序列输出
- C++ Boost graph 深度(广度)优先算法示例
- 【算法导论】图的创建,深度优先访问,广度优先访问(递归/非递归)
- 迷宫问题的算法(优于递归、深度优先、广度优先)
- 图算法之深度优先
- 算法 - 输出一个字符串的全排列(C++)
- php 深度优先递归输出路径下所有文件
- 百度面试题——简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 【算法学习】图相关算法编程实现-深度优先遍历和广度优先遍历
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 图的深度优先(非递归)、广度优先、最小生成树的C++实现
- 图及其算法复习(Java实现) 一:存储结构,深度优先周游,广度优先周游
- [C/C++] 先序建立二叉树| 先序、中序、后序遍历二叉树| 求二叉树深度、节点数、叶节点数 算法实现
- 该深度优先搜索算法查找钥匙的程序之问题~~
- C++:输出日历的算法
- 图的邻接矩阵生成算法,深度优先遍历算法,广度优先遍历算法,Prime算法。):
- 数据结构与算法(C++)之一——顺序表(SeqList)
- C++输出流cout的顺序问题
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 数据结构(C#)--图结构的实现输出以及图结构的深度和广度优先搜索和Dijkstra 算法的最小路径以及最小生成树的实现