0
我在Go項目中有一個嵌套結構樹。我想穿過樹並執行不同的操作,例如在樹中的不同級別挑選某些結構並將它們附加到列表中,或者修改結構。遍歷樹並使用可重用組件提取信息
我想使用可重用組件來做到這一點,這樣我就可以專注於實現執行任務,而不必爲每個此類功能重新實現Walker。到目前爲止,我能想到的唯一的事情是這樣的API:因爲它是通過指針指向樹節點
type applyFunc func(*Node)
func walker(node *Node, f applyFunc) {
....
for _, child := range node.children() {
walker(child, f)
}
}
功能walker
可以清楚地用於修改樹。我喜歡它,因爲我可以單獨編寫applyFunc
函數,而不必擔心實際的遞歸漫遊器代碼。但是,提取節點或刪除它們更困難。
對於提取節點的信息,也許我可以用一個封閉:
values := &[]int{}
f := func(node *Node) {
values.append(node.val)
}
walker(root, f)
//values now hold the information I am interested in
這會是一個很好的解決方案呢?有更好的嗎?
而且我們說,我想在樹創建在'main'功能的新'[]數組int'所有節點的值,我會怎麼做? –
我已經更新了我的答案,提取了節點中的所有值 –
謝謝,這就是我所懷疑的,但想確保這是該計劃。我會在一段時間後接受答案,但我想先給別人一個回答的機會。 –