/// <summary>
 /// 
 /// </summary>
 /// <param name="graph"></param>
 /// <returns></returns>
 private static Node FindLowestDegreeNode(Subgraph graph)
 {
     int minDegree = Int32.MaxValue;
     Node minDegreeNode = null;            
     IEnumerator i = graph.GetNodeEnumerator();
     while (i.MoveNext())
     {
         Node node = (Node) i.Current;
         if (minDegreeNode == null || node.Degree < minDegree)
         {
             minDegree = node.Degree;
             minDegreeNode = node;
         }
     }            
     return minDegreeNode;
 }
 /// <summary>
 /// Tests whether a complete unique path exists in a graph
 /// using Euler's Theorem.
 /// </summary>
 /// <param name="graph">The <see cref="Subgraph" /> containing the edges.</param>
 /// <returns><c>true</c> if a sequence exists.</returns>
 private bool HasSequence(Subgraph graph)
 {
     int oddDegreeCount = 0;
     IEnumerator i = graph.GetNodeEnumerator();
     while(i.MoveNext())
     {
         Node node = (Node) i.Current;
         if (node.Degree % 2 == 1)
             oddDegreeCount++;
     }
     return oddDegreeCount <= 2;
 }