首页 > 解决方案 > 用树定义的树节点

问题描述

我正在使用 python 中的树,这是我要解决的问题。

我所有的节点都有列表。对于每个父级,通过一次删除一个元素从父级列表中提取子级列表。

假设node1是 list1 [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]

标签: pythontree

解决方案


尝试这个:

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)

输出:

[2, 3]
[1, 3]
[1, 2]

推荐阅读