定義:
樹的DFS序就是在對樹進行DFS的時候,對樹的節點進行重新編號;
DFS序有一個很強的性質: 一顆子樹的所有節點在DFS序內是連續的一段, 利用這個性質我們可以解決很多問題。
代碼:
void DFS(int u, int fa)
{
L[u] = ++dfs_clock;
for(int k = head[u]; ~k; k = E[k].next)
{
int v = E[k].to;
if(v == fa) continue;
DFS(v, u);
}
R[u] = dfs_clock;
}
例如:
Tree
在DFS的過程中,我們對樹的每一個節點都重新編號,對于每一個節點都會產生兩個數L,R,L是這個節點的新編號,R是表示從L~R的節點都是以新節點L為根的子樹。