我有一个简单的问题......我试图在Golang中使用切片重现这个递归数据结构。
type Trie map[byte]Trie
现在我有一些'粗糙'使用下面的递归数据结构和切片的源代码,除了我的类型结构是结构而不是结构切片之外,一切正常。理想情况下,我希望我的类型化递归数据结构是Trie的一部分,其中包含元素Trie {byte,[] Trie}。希望有道理吗?现在我有一个类型是Trie struct {byte,[] Trie}。
type Trie struct {
elem byte
others []Trie
}
也许这会有所帮助。当我现在创建我的Trie切片时,我使用此功能。
func CreateTrie() []Trie {
return make([]Trie, 0, 13)
}
我想以这样的方式定义切片的Trie,以便我可以像这样创建切片。
func CreateTrie() Trie {
return make(Trie, 0, 13)
}
是否可以使用切片,或者我是否使用了我的第一个(唯一)切片解决方案?
答案 0 :(得分:1)
TLDR:我认为有可能
使用您的Trie结构
type Trie struct {
elem byte
others []*Trie
}
这是一个经过修改的createTrie
构造函数。我不确定你是否想展示Trie
链,所以我想通过level
作为例子。
func createTrie(levels int) *Trie {
result := &Trie{
others: make([]*Trie, 0, 13),
}
for level := 0 ;level < levels; level++ {
result.others = append(result.others, createTrie(levels - 1))
}
return result
}
答案 1 :(得分:0)
Is this您正在寻找什么?