algorithm-tree-dfs-timestamp
dfs时间戳
深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法。时间戳是DFS的一种应用,用于记录节点被访问的时间顺序。通过时间戳,我们可以了解节点的访问顺序以及子树的范围。
时间戳在许多算法中都有应用,例如:
树的重链剖分:在树的重链剖分中,时间戳用于标记节点的访问顺序。(目前主要是这个)
拓扑排序:通过DFS时间戳可以实现拓扑排序。
强连通分量:在图中找到强连通分量。
用法如下所示(记录节点的访问顺序)
123456789101112// 记录当前节点对应在字符串的区间int time = 0;private void dfs(int cur, List<Integer> g[], char cs[], char dfsStr[], int nodes[][]) { nodes[cur][0] = time; for (int nxt : g[cur]) { dfs(nxt, g, cs, dfsStr, nodes); } dfsStr[time++] = cs[cur]; nodes ...