to_nested_tuple#

to_nested_tuple(T, root, canonical_form=False)[source]#

返回给定树的嵌套元组表示形式。

树的嵌套元组表示形式是递归定义的。只有一个节点且没有边的树表示为空元组 () 。具有 k 个子树的树表示为一个长度为 k 的元组,其中每个元素是子树的嵌套元组表示形式。

Parameters:
TNetworkX 图

表示树的无向图对象。

root节点

解释为树根的 T 中的节点。

canonical_formbool

如果为 True ,每个元组都会被排序,使得函数返回有根树的规范形式。这意味着“较轻”的子树会先于“较重”的子树作为嵌套元组出现。这样,每个同构的有根树都有相同的嵌套元组表示形式。

Returns:
tuple

树的嵌套元组表示形式。

Notes

此函数 不是 from_nested_tuple() 的逆函数;唯一保证的是有根树是同构的。

Examples

树不必是平衡二叉树:

>>> T = nx.Graph()
>>> T.add_edges_from([(0, 1), (0, 2), (0, 3)])
>>> T.add_edges_from([(1, 4), (1, 5)])
>>> T.add_edges_from([(3, 6), (3, 7)])
>>> root = 0
>>> nx.to_nested_tuple(T, root)
(((), ()), (), ((), ()))

继续上述示例,如果 canonical_formTrue ,嵌套元组将被排序:

>>> nx.to_nested_tuple(T, root, canonical_form=True)
((), ((), ()), ((), ()))

即使是路径图也可以被解释为树:

>>> T = nx.path_graph(4)
>>> root = 0
>>> nx.to_nested_tuple(T, root)
((((),),),)