networkx.algorithms.tree.coding.from_nested_tuple¶
-
from_nested_tuple
(sequence, sensible_relabeling=False)[source]¶ Returns the rooted tree corresponding to the given nested tuple.
The nested tuple representation of a tree is defined recursively. The tree with one node and no edges is represented by the empty tuple,
()
. A tree withk
subtrees is represented by a tuple of lengthk
in which each element is the nested tuple representation of a subtree.Parameters: - sequence (tuple) – A nested tuple representing a rooted tree.
- sensible_relabeling (bool) – Whether to relabel the nodes of the tree so that nodes are labeled in increasing order according to their breadth-first search order from the root node.
Returns: The tree corresponding to the given nested tuple, whose root node is node 0. If
sensible_labeling
isTrue
, nodes will be labeled in breadth-first search order starting from the root node.Return type: NetworkX graph
Notes
This function is not the inverse of
to_nested_tuple()
; the only guarantee is that the rooted trees are isomorphic.See also
Examples
Sensible relabeling ensures that the nodes are labeled from the root starting at 0:
>>> balanced = (((), ()), ((), ())) >>> T = nx.from_nested_tuple(balanced, sensible_relabeling=True) >>> edges = [(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)] >>> all((u, v) in T.edges() or (v, u) in T.edges() for (u, v) in edges) True