1 void euler(int u) 2 { 3 for(int v = 1; v <= n; v++) 4 { 5 if(Map[u][v]) 6 { 7 Map[u][v]--, Map[v][u]--; 8 euler(v); 9 cout<<u<<" "<<v<<" "; 10 } 11 } 12 }
它同时适用于欧拉道路和回路。但如果需要打印的是欧拉道路,在主程序中调用时,参数必须是道路的起点。另外,打印的顺序是逆序的,因此在真正使用这份代码 时,应当把printf语句替换成一条push语句,把边(u,v)压入一个栈内。
上面适用于含重边的图。
刘汝佳紫书: