leetcode上的一道设计题,要求实现trie这种数据结构,包含插入、查找、前缀查找的操作
https://leetcode-cn.com/problems/implement-trie-prefix-tree/
首先定义Trie struct
1 | type Trie struct { |
children 保存的是当前节点的所有子节点
isWord 如果当前节点为单词结束,标记为true
part 记录当前节点的字符,为byte类型
Insert 插入操作
遍历要插入的单词word,判断每一个字符是否出现在children中,如果出现了,继续往下遍历,没有出现,则新建一个节点,并且放入当前节点的children中
结束条件则为遍历的层数跟给定的单词长度一致,并且标记当前节点的isWord属性为true,代表这是一个单词
Search 查询操作
同样是遍历所有的children,如果包含当前字符,则继续向下遍历,不包含则结束遍历,返回找不到,当遍历到单词长度的深度的时候,需要判断当前节点的isWord属性是否为true,只有为true的时候才是一个单词,否则返回找不到
StartsWith 判断以给定的prefix开头
同search操作相同,只是遍历到最后不需要判断当前节点的isWord属性
完整代码如下:
1 | type Trie struct { |