join_trees#

join_trees(rooted_trees, *, label_attribute=None, first_label=0)[源代码]#

返回通过连接 rooted_trees 创建的新有根树

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

参数:
rooted_treeslist

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

label_attributestr

如果提供,旧的节点标签将作为此节点属性存储在新树中。如果未提供,则不存储输入树中节点的原始标签。

first_labelint, 可选 (默认=0)

指定新根节点的标签。如果提供,连接后的树的根节点将使用此标签。如果未提供,根节点将默认标签为 0。

返回:
NetworkX 图

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

注意

树在 NetworkX 中存储为 NetworkX 图。NetworkX 没有强制要求它们是树。可以使用 networkx.is_tree() 对每棵树进行测试。

图、边和节点属性从给定的有根树传播到创建的树。如果存在任何重复的图属性,则位置参数元组中后面的树的属性将覆盖前面树的属性。

示例

连接两棵高度为 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