尝试枚举到目标顶点的所有输入路径(从顶点开始的路径,度为零)。
所有传入/传出边都存储在称为顶点的向量中。 我试图使用递归从目标开始,向后并在每个传入节点处进行操作,以递归方式调用并检索路径,直到其传入向量边缘大小为零(即度数为零)的顶点为止。
所有不同的路径都使用字符串连接存储在向量中。
该函数正在打印正确数量的不同路径,它们正在开始顶点,但是在此之后,某些路径缺少某些顶点。我不确定导致此问题的原因。
bool enum_paths_helper(int target, vector<string> &paths, int &y) {
if (has_cycle() || target < 0 || target >= num_nodes())
return false;
int i;
if (vertices[target].incoming.size() == 0) {
y = paths.size();
paths.push_back(vertices[target].name);
return true;
}
for (i = 0; i < vertices[target].incoming.size(); i++) {
enum_paths_helper(vertices[target].incoming[i].vertex_id, paths, y);
paths[y] = paths[y] +" " + vertices[target].name;
}
return true;
}