我有一个数据列表,指示下一步的发展方向,例如:
[[0,1,0,0,1],[0,0,1],[0,0],[0,1,1,1,0]]
我想将此数据实现为树形结构,例如:
节点内的数字是沿着这个方向走的人数。
我有一个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/