Encontrar un tour de Eulerian

Estoy tratando de resolver un problema en Udacity que se describe a continuación:

# Find Eulerian Tour
#
# Write a function that takes in a graph
# represented as a list of tuples
# and return a list of nodes that
# you would follow on an Eulerian Tour
#
# For example, if the input graph was
# [(1, 2), (2, 3), (3, 1)]
# A possible Eulerian tour would be [1, 2, 3, 1]

Se me ocurrió la siguiente solución, que, aunque no es tan elegante como algunos de los algoritmos recursivos, parece funcionar dentro de mi caso de prueba.

def find_eulerian_tour(graph):
    tour = []

    start_vertex = graph[0][0]
    tour.append(start_vertex)

    while len(graph) > 0:
        current_vertex = tour[len(tour) - 1]
        for edge in graph:
            if current_vertex in edge:
                if edge[0] == current_vertex:
                    current_vertex = edge[1]
                elif edge[1] == current_vertex:
                    current_vertex = edge[0]
                else:
                    # Edit to account for case no tour is possible
                    return False

                graph.remove(edge)
                tour.append(current_vertex)
                break
    return tour

graph = [(1, 2), (2, 3), (3, 1)]
print find_eulerian_tour(graph)

>> [1, 2, 3, 1]

Sin embargo, al enviar esto, el calificador me rechaza. Estoy haciendo algo mal? No puedo ver ningún error.

Respuestas a la pregunta(10)

Su respuesta a la pregunta