【CS61B】Lec27 Tries

  • 452 字
  1. 1. Lec27 Tries
    1. 1.1. 结构特征
    2. 1.2. 寻找特定单词
    3. 1.3. 其他特殊用处
      1. 1.3.1. 匹配前缀
      2. 1.3.2. 得到所有含有指定前缀的单词

Lec27 Tries

假设我们有一个string类型的集合,我们可以构建一个特殊的数据结构Trie来高效存储与查找这些数据

结构特征

Trie树将每个字符串的每个字母存储到每一个节点中,单词沿着从根向下的路径存储

如下图存储了单词sad与sam

trie

对于如何判定是一个单词,我们可以通过标记节点来获得节点结尾的位置,以判定遍历到了一整个单词

trie2

寻找特定单词

从根节点向下寻找:

  • 若找不到特定单词节点,则无法找到特定单词
  • 若找到了特定单词节点但并非标记的结尾节点,也无法找到特定单词
search

其他特殊用处

匹配前缀

得到所有含有指定前缀的单词

  • 首先找到指定前缀的最后一个字母的节点位置
  • 遍历该节点的下一个节点,调用函数将下一个节点的字母添加到当前前缀之后并继续遍历
  • 若到达结尾则加入结果列表
赞助喵
非常感谢您的喜欢!
赞助喵