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