Start with arbitrary triangle T_0. Define set "actives" (containing T_0), set "finished" (empty), and set "next" (empty).
While actives is nonempty, for each vertex V_Y in each triangle T_X in actives: Choose an edge from T_X that contains V_Y. Traverse around V_Y, making links as you go and adding each triangle to next. Mark each triangle with V_Y. Stop when you reach either a discontinuity or a triangle in any set, unless the triangle is in the set "next" and the triangle is marked with a vertex that is contained in T_X.
Add "actives" to "finished", move "next" into "actives", and clear "next".