完全な開示のために、これはHWでしたが、割り当てはすでに期限が切れていました。
単純なツリーを次のように定義すると、次のようになります。
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 += "]),"