为了充分披露,这是硬件,但任务已经到期。
如果我们定义一个简单的树如下:
class Tree (object):
__slots__ = "node","children"
def __init__(self,node,children=[]):
self.node = node
self.children = children
我们如何从字符串中构建一棵树?在字符串模型中,“NIL”表示树的结束。因此,该字符串1 2 5 NIL 3 4 NIL NIL NIL NIL
将返回一个类似t = Tree(1, [Tree(2, [Tree(5, []), Tree(3, [Tree(4)])])])
. 该解决方案可以使用递归和/或堆栈。我以为我了解堆栈和递归,但我无法弄清楚这个问题。有任何想法吗?
编辑
要添加更多信息,我们可以像这样打印树:
def __str__(self):
return "(%s)" % " ".join(map(str,[self.node]+self.children))
我无法接近创建一棵树并打印它。我能想到的只是创建一个看起来像创建树的字符串的字符串。我有:
def delinearize(self, linear_string):
@staticmethod
tree_data = linear_string.split()
tree_str = ""
if tree_data[0] == "NIL":
print "Tree needs initial root node"
return
for entry in tree_data:
if entry != "NIL":
tree_str += "Tree("+entry+", ["
elif entry == "NIL":
tree_str += "]),"