Если, имея «один корневой элемент», вы имеете в виду, что ваш ориентированный граф является корневым деревом , тогда корень будет единственным узлом с нулевой степенью.
Вы можете найти этот узел за линейное время (по количеству узлов) с помощью:
In [1]: import networkx as nx
In [2]: G=nx.balanced_tree(2,3,create_using=nx.DiGraph()) # tree rooted at 0
In [3]: [n for n,d in G.in_degree() if d==0]
Out[3]: [0]
Или вы можете использовать топологическую сортировку (корень - первый элемент):
In [4]: nx.topological_sort(G)
Out[4]: [0, 1, 3, 8, 7, 4, 9, 10, 2, 5, 11, 12, 6, 13, 14]
В качестве альтернативы может быть быстрее начать с заданного (случайного) узла и следовать за предшественниками, пока не найдете узел без предшественников.