我做了兩個類如下:
- 節點類
class Node:
def __init__(self,title):
self.title = time
self.child = []
并實作 getTitle、getChild、addChild、isEmpty: if child = [] 等方法
- 樹類
class Tree:
def __init__(self, title):
self.root = Node('*')
self.wordset = set()
我想在 Tree 類中實作一種方法,所以我可以制作 Tree 物件的等效串列結構(如下所示)
假設我有這樣的樹結構
a - p
/
* - t - o - y
\
p
obj 格式:obj(title, [child])
假設我的 obj 結構如下...
obj(*, [
obj(t, [
obj(o, [
obj(p, []),
obj(y, [])
]),
obj(a,[
obj(p, [])
])
])
])
我想要串列中的這種結果 obj 結構
[t, [
[o, [
[p, []],
[y, []]
]
],
[a, [
[p, []]
]
]
]
]
細節...
我參考了這個問題并修改了代碼,但輸出不是我上面寫的
import Tree as tr
def getTree(obj):
inputList = obj.getChild()[:]
curResultList = []
stack = []
preResultList = []
while inputList or stack:
if inputList:
poppedObj = inputList.pop(0)
if poppedObj.isEmpty():
curResultList.append(poppedObj.getTitle())
else:
curResultList.append(poppedObj.getTitle())
stack.append((inputList, curResultList))
inputList = poppedObj.getChild()
curResultList = []
else:
inputList, preResultList = stack.pop()
preResultList.append(curResultList)
curResultList = preResultList
return curResultList
t = tr.Tree()
t.addWord('top')
t.addWord('toy')
t.addWord('tap')
print(t.getWordset())
print(getTree(t.root))
我的輸出是:['t', ['o', ['p', 'y'], 'a', ['p']]]
他們在上述功能或任何其他解決方案(遞回或非遞回)中建議的任何更改對我來說是什么?
uj5u.com熱心網友回復:
我認為你可以使用遞回來簡化這個:
def getTree(obj):
return [
obj.getTitle(),
list(map(getTree, obj.getChild()))
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425218.html
下一篇:如何將嵌套字典轉換為串列字串
