to_nested_tuple#

to_nested_tuple(T, root, canonical_form=False)[源代码]#

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

树的嵌套元组表示是递归定义的。一个节点没有边的树用空元组表示, () . 一棵树 k 子树由一个长度为的元组表示。 k 其中每个元素都是子树的嵌套元组表示。

参数
T网络X图表

表示树的无向图对象。

root结点

中的节点 T 解释为树根。

canonical_form布尔尔

如果 True ,则对每个元组进行排序,以便该函数返回有根树的规范形式。这意味着“较轻”的子树将作为嵌套的元组出现在“较重”的子树之前。以这种方式,每个同构的根树具有相同的嵌套元组表示。

返回
元组

树的嵌套元组表示。

笔记

这个功能是 notfrom_nested_tuple() 唯一的保证是有根的树是同构的。

实例

树不必是平衡二叉树::

>>> 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)
((((),),),)