【发布时间】:2020-02-10 00:24:12
【问题描述】:
我正在做一个练习,我有点卡住了,需要一些帮助。假设我们在有向图上有以下顶点和边:AB、BC、AD、CD、DC、DE、CE、EB、AE 如下所示
试图弄清楚从 C 到 C 存在多少“行程”,不超过 3 个边。那将是两 (2) 个,C-D-C 和 C-E-B-C
到目前为止,我已经设法通过使用 DFS 和递归来解决它。我跟踪深度(即远离源的边数),当深度超过 3 时,递归函数返回。
我现在要做的是在不使用递归的情况下解决它,即使用堆栈,但我被卡住了!如果我使用类似以下的东西(伪代码):
s.create() <- create stack
s.push(nodeA)
depth = 0
while !s.empty
n = s.pop()
foreach (n.connectedVertices as c)
s.push(c)
depth++
然后我无法知道每个顶点应该在哪个深度上。我一直在考虑以某种方式使用一堆堆栈(为每个深度保存?)但还没有弄清楚。
任何帮助将不胜感激。
【问题讨论】:
标签: recursion stack graph-algorithm depth-first-search directed-graph