Ah, in my first answer I think I misunderstood your question. If you’re wondering about how to remove the “legs” and keep the loop, I’m not sure how to do that with VTK.
To give more context, that polydata was derived from an attempt to be able to do something like vtkClipClosedSurface on a pipeline. The only problem is that vtkClipClosedSurface only supports the boolean intersection of the input planeCollection (and it does not support union or difference boolean operations)
If you want to get just one face from vtkClipClosedSurface, you can use SetScalarModeToLabels() and then use another filter to extract only the cells that it labeled as the cut face. For example, I think vtkPolyDataConnectivityFilter can do this, or the selection and extraction filters.
VMTK - the Vascular Modeling Toolkit (VTK-based toolkit for analyzing vascular trees) can process such networks. It can label branches, compute metrics that you can use to keep/remove branches. See vmtkbranch* scripts for examples how to use the filters.