Golang:递归数据结构

时间:2016-05-21 17:44:43

标签: go

我有一个简单的问题......我试图在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)
}

是否可以使用切片,或者我是否使用了我的第一个(唯一)切片解决方案?

2 个答案:

答案 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
}

https://play.golang.org/p/-GRm0tV-B1

答案 1 :(得分:0)

Is this您正在寻找什么?