由於我不堅定地使用指針和遞歸,所以我被困在2天之內。我有路徑類似的結構數組,讓說:從路徑字符串中獲取類似於結構的樹
s:=[]string {
"a/b/c",
"a/b/g",
"a/d",
}
與數據結構是這樣的:
type Node struct {
Name string `json:"name"`
Children []Node `json:"children"`
}
我想用這樣的事情結束了:
{
"name": "a",
"children": [
{
"name": "b",
"children": [
{
"name": "c",
"children": []
},
{
"name": "g",
"children": []
}
]
},
{
"name": "d",
"children": []
}
]
}
我試圖用遞歸來構建它,這種方法很好,但只適用於一個字符串(例如「a/b/c」),只要我嘗試實現某些應該添加缺失節點(「g」)的內容「a/b/g」)到我被卡住的樹上。
我有這樣的事情:
func appendChild(root Node, children []string) Node {
if len(children) == 1 {
return Node{children[0], nil}
} else {
t := root
t.Name=children[0]
t.Children = append(t.Children, appendChild(root, children[1:]))
return t
}
}
可能有人點我到一個有效的解決方案?
你可以做一個[Trie](https:// en。 wikipedia.org/wiki/Trie)或[Radix Tree](https://en.wikipedia.org/wiki/Radix_tree)插入算法,以瞭解如何實現您想要的內容。 – mkopriva
如果你沒有問題,但想改善你的解決方案,你可以發佈類似這樣的問題到codereview.stackexchange –
其實代碼實際上並不工作,但我會嘗試你的建議 – hanneslehmann