DFS序

DFS序:就是将树形结构转化为线性结构,用dfs遍历一遍这棵树,进入到x节点有一个in时间戳,递归退出时有一个out
时间戳,x节点的两个时间戳之间遍历到的点,就是根为x的子树的所有节点。

问题:求下图的DFS序
DFS序_第1张图片

#include
#include
 
#define max(x,y) (x > y ? x : y)

using namespace std;

int time = 0;

int in[10];
int out[10];
int carr[50];

vector vct[10];

void dfs(int x,int fa){
	in[x] = ++time;
	carr[time] = x;
	for(int i = 0;i < vct[x].size();i++){
		int cnt  = vct[x][i];
		if(cnt == fa){
			continue;
		}
		dfs(cnt,x);
	}
	out[x] = time; 
}

int main(){
	vct[0].push_back(1);
	vct[0].push_back(2);
	vct[1].push_back(3);
	vct[1].push_back(4);
	vct[2].push_back(5);
	vct[2].push_back(6);
	vct[2].push_back(7);
	vct[4].push_back(8);
	dfs(0,-1);
	cout<<"in[]:";
	for(int i = 0;i <10;i++){
		cout<

你可能感兴趣的:(DFS)