【问题标题】:Golang: Recursive data structuresGolang:递归数据结构
【发布时间】:2016-05-22 02:41:26
【问题描述】:

我有一个简单的问题...我正在尝试使用切片在 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)
}

这对切片是否可行,或者我是否已将我的第一个(唯一)解决方案用于切片?

【问题讨论】:

  • 是的,我不敢相信它这么简单。我想我需要一些休息时间。谢谢

标签: go


【解决方案1】:

Is this你在找什么?

【讨论】:

    【解决方案2】:

    TLDR:我认为这是可能的

    使用你的 Trie 结构

    type Trie struct {
        elem byte
        others []*Trie
    }
    

    这是一个修改后的createTrie 构造函数。我不确定你是否想显示Tries 的链,所以我想通过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

    【讨论】:

    • 当没有列表但只有递归关联时,这是一个更好的解决方案
    猜你喜欢
    • 2022-01-24
    • 2018-08-27
    • 1970-01-01
    • 2018-01-27
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多