我已经被困了两天了,因为我对指针和递归不太坚定。我有一系列类似路径的结构,可以说:
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
}
}
有人可以指出我一个有效的解决方案吗?