1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ppmoon-gbt2260

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
trie.go 916
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
刘允鹏 Отправлено 18.07.2020 13:39 89fdad2
package gbt2260
//节点
type Node struct {
value string
children map[string]*Node
}
//跟树
type Trie struct {
root *Node
}
//创建一颗新树
func NewTrie() *Trie {
return &Trie{
root: &Node{
children: make(map[string]*Node),
},
}
}
//返回跟节点
func (t *Trie) Root() *Node {
return t.root
}
//添加节点
func (t *Trie) Add(lCode []string, name string) *Node {
node := t.root
for i := range lCode {
r := lCode[i]
if n, ok := node.children[r]; ok {
node = n
} else {
// 否则就创建这个节点
node = node.NewChild(r, name)
}
}
return node
}
//创建并返回一个新子节点的指针这里的key
func (n *Node) NewChild(key string, value string) *Node {
node := &Node{
value: value,
children: make(map[string]*Node),
}
n.children[key] = node
return node
}
// 返回一个子叶
func (n Node) Children() map[string]*Node {
return n.children
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ppmoon-gbt2260.git
git@api.gitlife.ru:oschina-mirror/ppmoon-gbt2260.git
oschina-mirror
ppmoon-gbt2260
ppmoon-gbt2260
master