Да, это O (n). При поиске по глубине в ориентированном графе имеется 3 типа не-древесных ребер - поперечное, обратное и прямое.
Для неориентированного случая единственным видом не-древесного края является задний край. Итак, вам просто нужно искать задние края.
Короче, выберите начальную вершину. Пройдите и продолжайте проверять, является ли встречный край задним. Если вы найдете n-1 ребер дерева, не найдя задних ребер, а затем, выбегая из ребер, вы - золото.
(Просто для пояснения - back edge
- это тот, где вершина на другом конце уже встречалась - и из-за свойств неориентированных графов вершина на другом конце будет предком данного узла в дерево, которое строится.)