7.2.5 蓝桥杯基础数据结构之DFS序
引言
在蓝桥杯等程序设计竞赛中,深度优先搜索(DFS)是一种常用的遍历树或图的方法。DFS序是通过深度优先搜索生成的节点序列,对于解决一系列树上的问题特别有用。本文将介绍DFS序的基本概念、生成方法及其在蓝桥杯中的应用。
DFS序基本概念
DFS序是指在对树或图进行深度优先搜索时,按照访问的顺序记录下的节点序列。在树上,这种序列能够有效地表示树的结构信息,使得许多树上的问题可以转化为序列上的问题,从而简化问题的处理。
生成DFS序的方法
步骤
- 初始化: 选择树或图的一个节点作为起点。
- 执行DFS: 深度优先遍历整个树或图,记录遍历的顺序。
- 记录序列: 在每次访问一个新节点时,将其添加到序列中。
示例代码(C++)
#include <iostream>
#include <vector>
using namespace std;
vector<int> adj[100]; // 邻接表表示图
vector<int> dfs_order; // 存储DFS序
void dfs(int v, int p = -1) {
dfs_order.push_back(v); // 访问节点v
for (int u : adj[v]) {