博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 深度优先算法输出树的访问顺序
阅读量:6112 次
发布时间:2019-06-21

本文共 1574 字,大约阅读时间需要 5 分钟。

hot3.png

172404_Qh0W_1474656.png

输出使用深度优先算法访问树的顺序;

yuanzhen:~/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 
 

转载于:https://my.oschina.net/lCQ3FC3/blog/823175

你可能感兴趣的文章
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>
Python/PHP 远程文件/图片 下载
查看>>
【原创】一文彻底搞懂安卓WebView白名单校验
查看>>
写给对前途迷茫的朋友:五句话定会改变你的人生
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>