data-structures - 基本前缀树实现问题

标签 data-structures trie prefix-tree

我已经实现了一个基本的前缀树或“trie”。特里树由如下节点组成:

// pseudo-code
struct node {
    char c;
    collection<node> childnodes;
};

假设我将以下单词添加到我的字典树中:“Apple”、“Ark”和“Cat”。现在,当我查找“Ap”和“Ca”等前缀时,我的 trie 的“bool containsPrefix(string prefix)”方法将正确返回 true。

现在我正在实现“bool containsWholeWord(string word)”方法,该方法将为“Cat”和“Ark”返回 true,但为“App”返回 false(在上面的示例中)。

特里树中的节点通常具有某种“endOfWord”标志吗?这将有助于确定正在查找的字符串是否实际上是输入到特里树中的整个单词而不是只是一个前缀。

干杯!

最佳答案

键的结束通常通过叶节点来指示。要么:

  • 子节点为空;或
  • 您有一个分支,带有一个键前缀和一些子节点。

您的设计没有叶/空节点。尝试用例如来表示它一个空值。

关于data-structures - 基本前缀树实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348391/

相关文章:

c++ - 如何使STL与一种 "empty struct"配对只占用另一种类型的空间?

c - 使用 C 中的 fscanf 读取 .txt 文件

add 函数中的 C trie 内存泄漏

c++ - 给定一个单词,通过在它们之间添加空格来形成一个有意义的单词

data-structures - 使用 trie 数据结构

c - 添加到前缀树时出现段错误

algorithm - 哪个搜索更快,二分搜索还是使用前缀树?

scala - 输入 Scala 集合

java - 返回数组列表的算法的空间复杂度是多少?

C++ 深度优先搜索带前缀参数的 Trie