【发布时间】:2017-05-05 13:09:37
【问题描述】:
我从 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 " in "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
}
}
有人能指出一个有效的解决方案吗?
【问题讨论】:
-
您可以在 Google 上搜索 Trie 或 Radix Tree 插入算法,以了解如何实现您想要的。
-
如果您没有问题但想改进您的解决方案,您可以将类似的问题发布到 codereview.stackexchange
-
实际上代码并没有真正起作用,但我会尝试你的建议