07歐拉路徑
算法:
#coding=utf-8
"""
算法:歐拉路徑
作者:lph-China
時間:2019/7/17
"""
def eulerian_tour_undirected(graph):
P = []
Q = [0]
R = []
next = [0] * len(graph)
seen = [set() for _ in graph]
while Q:
node = Q.pop()
P.append(node)
while next[node] < len(graph[node]):
neighbor = graph[node][next[node]]
next[node] += 1
if neighbor not in seen[node]:
seen[neighbor].add(node)
P.append(neighbor)
node = neighbor
while R:
Q.append(R.pop())
return P