输入如下特征的列表,基本类型的值都是正整数,列表项都是树的路径,现在需要将该列表项转换为树,转换时应设置树的根,根的值为0
列表为:
[[1,2,3,4],
[1,2,3,5],
[1,2,6],
[7]]
树的格式为:
0
/ \
1 7
/ \
2 6
/
3
/ \
4 5
Python代码如下:
class Tree:
def __init__(self, value, parent=None):
if isinstance(value, list):
self.value = 0
self.parent = None
self.children = []
# 获取列表里每个路径
for path in value:
# 构建父结点和孩子结点
parent = self
for i,v in enumerate(path):
node = None
for child in parent.children:
if v == child.getValue():
node = child
break
if node == None:
node = Tree(v, parent)
parent.children.append(node)
parent = node
else:
# 该逻辑一般只由此构造器执行,而不由外部创建对象时直接执行
self.value = value
self.parent = parent
self.children = []
def getValue(self):
"""获取结点值"""
return self.value
def getChildren(self):
"""获取孩子结点"""
return self.children
def getParent(self):
"""获取父结点"""
return self.parent
网友评论