用树定义的树节点

时间:2019-07-01 07:33:11

标签: python tree

我正在用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]

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)