join_trees#

join_trees(rooted_trees, *, label_attribute=None, first_label=0)[source]#

返回一个新的根树,通过连接 rooted_trees 构建。

通过连接 rooted_trees 中的每一棵树来构建一棵新树。添加一个新的根节点,并将其连接到输入树的每个根节点。在从树中复制节点时,会发生重标记为整数的过程。如果提供了 label_attribute ,旧的节点标签将存储在新树的这个属性下。

Parameters:
rooted_treeslist

一个列表,其中每个元素是一个二元组,左元素是一个表示树的 NetworkX 图对象,右元素是该树的根节点。这些树的节点将被重标记为整数。

label_attributestr

如果提供,旧的节点标签将存储在新树的这个节点属性下。如果没有提供,输入树中节点的原始标签不会被存储。

first_labelint, 可选 (默认=0)

指定新根节点的标签。如果提供,连接后的树的根节点将具有这个标签。如果没有提供,根节点将默认为标签 0。

Returns:
NetworkX 图

通过连接提供的 rooted_trees 得到的有根树。新树有一个根节点,标签由 first_label 指定(如果没有提供则默认为 0)。输入的 rooted_trees 的子树被附加到这个新根节点上。如果提供了 label_attribute ,每个非根节点都有一个属性,指示输入树中节点的原始标签。

Notes

树在 NetworkX 中作为 NetworkX 图存储。没有特别强制这些是树的事实。可以使用 networkx.is_tree() 对每棵树进行测试。

图、边和节点属性从给定的有根树传播到创建的树。如果有任何重叠的图属性,来自元组中较晚树的属性将覆盖较早树的属性。

Examples

将两个高度为 h 的完全平衡二叉树连接起来,得到一个深度为 h + 1 的完全平衡二叉树:

>>> h = 4
>>> left = nx.balanced_tree(2, h)
>>> right = nx.balanced_tree(2, h)
>>> joined_tree = nx.join_trees([(left, 0), (right, 0)])
>>> nx.is_isomorphic(joined_tree, nx.balanced_tree(2, h + 1))
True