C 如何从一个节点找到所有简单路径?

C 如何从一个节点找到所有简单路径?,c,graph,tree,C,Graph,Tree,我有一个这样的图,现在我想打印出从0开始的所有路径 0 | 1 / \ 2 --- 3 | / \ 5---6---4 预期产量 All the path from 0 are: 0123465 0123645 0125634 0125643 0132564 0134652 01364 013652 我试图画一棵树来理解这

我有一个这样的图,现在我想打印出从0开始的所有路径

             0
             |
             1 
           /   \
          2 --- 3
          |    / \
          5---6---4
预期产量

All the path from 0 are:
0123465
0123645
0125634
0125643
0132564
0134652
01364
013652
我试图画一棵树来理解这个问题

我试着对它进行编程:

int main(){
...
//打印所有节点
//将开始节点选择为0
int-startV=0;
//初始化路径
int path=startV;
//初始化访问的数组;
int访问[7]={-1,-1,-1,-1,-1};
重现(g,n,0,路径,访问);
}
无效重现(图g,int numV,顶点startV,int路径,int*访问){
//DFS递归算法
//将此节点标记为已访问
访问量[startV]=1;
//在startV下运行所有节点,
对于(int i=0;i
但是,我的代码只能输出这个

path:1
path:12
path:123
path:1234
path:12346
path:123465
我想我的访问列表和回溯方法可能存在一些问题。有人能给我一些建议吗?谢谢

您没有“取消访问”任何节点

因此,当您回溯时,您无法沿着另一条路径通过节点。我建议你加上

visited[startV] = -1;
Recur
功能结束时

void Recur(Graph g, int numV, Vertex startV, int path, int *visited) {

    // mark this node as visited
    visited[startV] = 1;

    //...

    // mark this node as not visited
    visited[startV] = -1;
}