private void PopStack(TNode v) { stack.Remove(v.stackNode); v.stackNode = null; }
private void PushStack(TNode v) { v.stackNode = stack.AddLast(v); }
private void RDFS(TNode u) { component.Add(u); PopStack(u); foreach (var v in u.inNeighbours) { if (v.stackNode != null) { RDFS(v); } } }
private TNode CreateTNode(Node v) { TNode tv; if (!nodeMap.ContainsKey(v)) { tv = new TNode(v); nodeMap[v] = tv; } else { tv = nodeMap[v]; } return tv; }
private void DFS(TNode u) { u.visited = true; foreach (var v in u.outNeighbours) { if (!v.visited) { DFS(v); } } PushStack(u); }