В ориентированном графе, в котором узлы имеют не только идентификаторы, но и данные (словарь атрибутов), я бы получил дерево DFS, начиная с данного исходного узла, , включая данные дочерних узлов.
Однако я заметил, что функция nx.dfs_tree
, похоже, возвращает дерево без каких-либо данных:
In [1]: import networkx as nx
In [2]: G = nx.DiGraph()
In [3]: G.add_nodes_from([(0, {'name': 'foo'}), (1, {'name': 'bar'}), (2, {'name
...: ': 'baz'})])
In [4]: G.add_edge(0, 1)
In [5]: G.add_edge(1, 2)
In [6]: T = nx.dfs_tree(G, 1)
In [7]: T.nodes[1]
Out[7]: {}
In [8]: T.nodes[2]
Out[8]: {}
In [9]: T.nodes
Out[9]: NodeView((1, 2))
In [10]: G.nodes[1]
Out[10]: {'name': 'bar'}
Как видноиз приведенного выше примера T.nodes[1]
является пустым словарем, тогда как G.nodes[1]
содержит словарь данных, первоначально переданный в.
Как я могу сделать так, чтобы T.nodes[1]
и другие узлы дерева содержали те же данные, что иисходный график?