How can I get a directional tree from a graph?

import networkx as nx
G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,5)
G.add_edge(4,6)
G.add_edge(1,6)
G.add_edge(2,6)
G.add_edge(7,8)
G.add_edge(9,8)
mst=nx.prim_mst(G)# a generator of MST edges

I have a tree. How can I get a directed tree with a root of 4?

+5
source share
2 answers

To get a directional width search tree with node 4:

tree = nx.bfs_tree(G, 4)

enter image description here


To get a directed tree of the first search with node 4:

tree = nx.dfs_tree(G, 4)

enter image description here


Graphs were generated as follows:

import matplotlib.pyplot as plt
import networkx as nx

G = nx.Graph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,5)
G.add_edge(4,6)
G.add_edge(1,6)
G.add_edge(2,6)
G.add_edge(7,8)
G.add_edge(9,8)

tree = nx.bfs_tree(G, 4)
nx.draw(tree)
plt.savefig('/tmp/bfs_image.png')
+6
source

Perhaps @kalombo wants a oriented tree from MST from G with root in node 4. In this case, you first need to plot the MST. eg.

T = nx.bfs_tree(nx.Graph(nx.prim_mst_edges(G)),4)
+1
source

All Articles