Lec27 Tries
假设我们有一个string类型的集合,我们可以构建一个特殊的数据结构Trie来高效存储与查找这些数据
结构特征
Trie树将每个字符串的每个字母存储到每一个节点中,单词沿着从根向下的路径存储
如下图存储了单词sad与sam
对于如何判定是一个单词,我们可以通过标记节点来获得节点结尾的位置,以判定遍历到了一整个单词
寻找特定单词
从根节点向下寻找:
- 若找不到特定单词节点,则无法找到特定单词
- 若找到了特定单词节点但并非标记的结尾节点,也无法找到特定单词
其他特殊用处
匹配前缀
得到所有含有指定前缀的单词
- 首先找到指定前缀的最后一个字母的节点位置
- 遍历该节点的下一个节点,调用函数将下一个节点的字母添加到当前前缀之后并继续遍历
- 若到达结尾则加入结果列表