我必須製作一個程序來解析使用集合括號和數字表示的樹。因此,每個括號代表樹中的節點,程序應該打印出每個父節點的所有子節點。 python代碼如下:使用python解析樹
class context(object):
def __init__(self, label=None, parent=None, children=[]):
self.label = label
self.parent = parent
self.children = []
self.list = []
def make_tree(self, tree):
stack = []
index = 0
while index < len(tree):
if tree[index] is '(':
if self.label is None:
self.label = tree[index+1]
index = index+1
else:
if len(stack) == 0:
stack.append(context(tree[index+1], self.label))
index = index+1
else:
stack.append(context(tree[index+1], stack[len(stack)-1].label))
index = index+1
elif tree[index] is ')':
if len(stack) == 1:
self.children.append(stack.pop())
return
else:
stack[len(stack)-2].children.append(stack.pop())
index = index+1
def traverse(self, size, obj):
if self.label is None or size == 0:
return []
temp_list = []
temp = []
dic = {}
tt = [children.label for children in obj.children]
dic[obj.label] = tt
temp.append(dic)
for child in obj.children:
temp_list = child.traverse(len(child.children), child)
print temp
return temp + temp_list
line = '(Root (1 (2) (3 (4) (5) ) (6 (7) (8 (9) ) ) ) ) '.split()
test = context()
test.make_tree(line)
final = test.traverse(len(test.children), test)
結果必須是這樣的。
如果我打印出make_tree函數中的列表,我會得到正確的結果......但最終結果是不正確的。在這種情況下,我失蹤{'3':['4','5']}
有什麼評論?
你如何打印出最後:
您可以通過撥打這個?因爲我只看到 - '[{'Root':['1']}]'。 – p0lAris
@ flippex17只需在運行此代碼後鍵入final即可。 – eChung00
哦,我很抱歉,我沒有太在意。我會研究它。 – p0lAris