Skip to main content
`Ctrl`+`K`

# from_nested_tuple

from_nested_tuple(sequence, sensible_relabeling=False)

  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 with `k` subtrees is represented by a tuple of length `k` 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:
    NetworkX graph

      The tree corresponding to the given nested tuple, whose root node is node 0. If `sensible_labeling` is `True`, nodes will be labeled in breadth-first search order starting from the root node.

  See also

  `to_nested_tuple`
  `from_prufer_sequence`

  Notes

  This function is not the inverse of `to_nested_tuple()`; the only guarantee is that the rooted trees are isomorphic.

  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