See eulerian_path
for details
# Build a path (or circuit) that removes every edge exactly once.
#
# See `eulerian_path` for details
fun remove_eulerian_path(start: V): Array[V]
do
var stack = new Array[V]
var path = new Array[V]
var current = start
loop
if out_degree(current) == 0 then
path.unshift current
if stack.is_empty then break
current = stack.pop
else
stack.add current
var n = successors(current).first
remove_arc(current, n)
current = n
end
end
return path
end
lib/graph/digraph.nit:843,2--864,4