我正在用python处理树,这就是我要解决的问题。
我所有的节点都有列表。对于每个父母,通过一次删除一个元素从父母列表中提取孩子的列表。
假设 node1 是列表1 [1,2,3] 我想为node1拥有3个孩子(在这种情况下),其中每个孩子都是从列表中提取的通过一次删除一项来从列表1中删除。因此 node2 = [2,3] node3 = [1,3] 和 node4 = [1,2]
我正在使用 anytree 库,但是在复杂节点上找不到足够的文档。 我目前已经编写了此方法,但我怀疑语法:
from anytree import Node, RenderTree
#some othercode
def createNodes(parentnode):
for i in (0,K,1):
childnode=Node(parentnode.pop(i), parent=parentnode)
return childnode
此代码可作为解决方案吗? ps:这是我在Anytrees上遵循的教程 [https://anytree.readthedocs.io/en/2.6.0/intro.html#basics][1]
答案 0 :(得分:1)
尝试一下:
OFFSET
输出:
class Node:
def __init__(self, data):
self.data = data
self.child = 3*[None]
for i in range(len(data)):
elem = data.pop(i)
self.child[i] = data
print(self.child[i])
data.insert(i, elem)
data = [1, 2, 3]
root = Node(data)
或者,您可以尝试以下操作:
[2, 3]
[1, 3]
[1, 2]
输出:
class Node:
def __init__(self, data, parent):
self.parent = parent
self.data = data
def createNodes(parentnode):
data = parentnode.data
for i in range(len(data)):
elem = data.pop(i)
childnode = Node(data, parent=parentnode)
print(childnode.data)
data.insert(i, elem)
root = Node([1, 2, 3], None)
createNodes(root)