深度优先搜索(DFS: Depth First Search)

Posted jawide

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度优先搜索(DFS: Depth First Search)相关的知识,希望对你有一定的参考价值。

深度优先搜索是一种树的遍历方式。与此对应的是广度优先搜索

?

二叉树的优先搜索:

技术图片

?

如何把一个数学问题转换为树的深度优先搜索问题:

例如:各位数之和为偶数的一个10位二进制数有几个。

我们来分析一下这个问题,首先一共有10位数,然后每一位数都只有两种状态0,1

这可以看做是一个深度为10的一个二叉树,然后用树的深度优先搜索即可解决问题。

?

用C语言实现的代码结构

void DFS(int depth)

{

????if(depth==10)????????//递归出口

????{

????????//do something????????//对全部层进行操作

????????return;

????}

????for(int i=0; i<2; i++)????????//这是一个二叉树

????{

????????//do something????????//对该层进行操作

????????DFS(depth+1);????????//进入下一层

????}

}

?

完整代码

#include <iostream>

?

using namespace std;

?

int a[10]={};

int count=0;

?

void DFS(int depth)

{

????if(depth==10)

????{

????????int sum=0;

????????for(int i=0;i<10;i++) sum+=a[i];

????????if(sum%2==0)

????????{

????????????count++;

????????}

????????return;

????}

????for(int i=0;i<2;i++)

????{

????????a[depth] = i;

????????DFS(depth+1);

????}

}

?

int main()

{

????DFS(0);

????cout << count << endl;

????return 0;

}

以上是关于深度优先搜索(DFS: Depth First Search)的主要内容,如果未能解决你的问题,请参考以下文章

python实现基础的深度优先搜索(DFS, depth first search)解决数的全排列问题

深度优先搜索(DFS)

图论DFS(Depth First Search)Algorithm深度优先搜索遍历空间平面图选择路径,networkx,Python

图论DFS(Depth First Search)Algorithm深度优先搜索遍历空间平面图选择路径,networkx,Python

深度优先搜索---Depth-First-Search

DFS-深度优先搜索与BFS-广度优先搜索