1  # circuit is a global array
 2     find_euler_circuit
 3       circuitpos  =   0
 4       find_circuit(node  1 )
 5 
 6  # nextnode and visited is a local array
 7  # the path will be found in reverse order
 8    find_circuit(node i)
 9 
10       if  node i has no neighbors then
11        circuit(circuitpos)  =  node i
12        circuitpos  =  circuitpos  +   1
13       else
14         while  (node i has neighbors)
15            pick a random neighbor node j of node i
16            delete_edges (node j, node i)
17            find_circuit (node j)
18        circuit(circuitpos)  =  node i
19        circuitpos  =  circuitpos  +   1
20