2016-05-21 24 views
1

私は簡単な質問をしています...私はGolangのこの再帰的なデータ構造をスライスで再現しようとしています。Golang:再帰的なデータ構造

type Trie map[byte]Trie 

は、今私は、スライスして、以下の再帰的なデータ構造を使用して、いくつかの「ラフ」ソースコードを持って、すべてが構造ではなく構造のスライスである私のタイプされた構造を除いて正常に動作します。理想的には、私の型付きの再帰的なデータ構造をTrie {byte、[] Trie}という要素を持つTrieのスライスにしたいと思います。希望は意味をなさないでしょうか?今私はTrie構造体{byte、[] Trie}型を持っています。

type Trie struct { 
elem byte 
others []Trie 
} 

おそらくこれが役立ちます。スライスのトライを今作成すると、私はこの機能を使用します。

func CreateTrie() []Trie { 
    return make([]Trie, 0, 13) 
} 

私はこのようなスライスを作成できるように定義されたスライスのトライを持っていたいと思います。

func CreateTrie() Trie { 
    return make(Trie, 0, 13) 
} 

これはスライスで可能ですか、スライスには私の最初の(唯一の)ソリューションを使用していますか?

+0

うん、私はそれが簡単だったなんて信じられません。私はダウンタイムが必要だと思う。ありがとう – G4143

答えて

1

TLDR:私はそれはあなたのトライ構造体

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

+0

これは、リストを持たないが、再帰的な関連付けだけがあるときは、より良い解決策です – kenfire

関連する問題