我有一个数据列表,指示下一步的发展方向,例如:

[[0,1,0,0,1],[0,0,1],[0,0],[0,1,1,1,0]]


我想将此数据实现为树形结构,例如:
python - python如何将列表实现为树?-LMLPHP

节点内的数字是沿着这个方向走的人数。

我有一个Tree类,我这样写自己:

class Tree(object):
    def __init__(self):
        self.left = None
        self.right = None
        self.data = 0
def insert(self,num):
    self.data = self.data + 1
    if num == 0:
        if self.left == None:
            self.left = Tree()
        return self.left
    elif num == 1:
        if self.right == None:
            self.right = Tree()
        return self.right


我怎样才能做到这一点?我试图以递归的方式创建它,但事实证明,它不是保存在root下,而是保存在build_tree下,这是我尝试作为递归指针创建的变量。

root = Tree()
for route in data:
    build_tree = root
    for i in range (0,len(route)):
        num = route[i]
        build_tree = build_tree.insert(num)


谢谢!

编辑:此代码实际上就像Blender在评论中说的那样工作。当我将其实现为更复杂的代码时,我认为我出错了。

还感谢John La Rooy的建议和Kevin K.的示例!

最佳答案

尝试像这样为节点创建一个单独的类

class Node:
    def __init__(self, value):
        self.value = value
        self.left = None
        self.right = None


然后在您的Tree类中初始化self.root并在Tree中使用递归声明函数

编辑:Here是一个示例。

关于python - python如何将列表实现为树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39157193/

10-12 14:24