【发布时间】:2020-10-13 03:07:02
【问题描述】:
我正在尝试找出一种方法来实现 DFS 搜索,以通过使用堆栈而不是使用递归来查找表示为邻接列表的有向图上给定节点的最长路径的长度。具体来说,我想实现 DFS 搜索,以便在它运行时填充堆栈,如下图所示..
如果不清楚,这个视频是我希望在程序运行时建立堆栈的方式(DFS 大约在 12:45 开始:https://www.youtube.com/watch?v=pcKY4hjDrxk 但是我正在努力寻找一种方法来实现这一点,因为我对编程还是很陌生。我当前的代码将图形表示为无序映射,每个条目都包含指向它的所有节点的向量。即:
std::unordered_map<long, std::vector<long>> nodes;
基本上,我想在 unordered_map 中的键值为 -1 的所有节点中实现 DFS 搜索,如图所示,在视频中,堆栈分配如图所示。我在想,这样我就可以记录堆栈何时达到最大大小,那将是最长的路径。
需要注意的是,这个特定问题中的图表是每条边只有一个出局度,如图所示。。这是可能的,还是我必须使用某种递归来做我想做的事?提前感谢您的帮助。
【问题讨论】:
标签: c++ algorithm graph tree depth-first-search