我有一个三元搜索树,其中包含单词的所有后缀。在这个结构中构造和搜索单词的时间复杂度是多少?
示例:
一个字香蕉$,有后缀banana $,anana $,nana $,ana $,na $,a $,$ 和lexicografical order $,$,ana $,anana $,banana $,na $,nana $。
以平衡形式在三元搜索树中插入所有后缀是: 阿纳纳$,一个,$,ANA $,NA $,香蕉$,绦虫$
答案 0 :(得分:0)
一般来说,在TST中插入内容所需的时间是O(L log |Σ|),其中L是字符串的长度,Σ是字符串中允许字符的集合。这样做的原因是添加每个单独的字符需要时间O(log |Σ|)因为你将每个字符添加到最多的BST |Σ|元素。对于您正在描述的示例,您要添加长度为1,2,3,...,n的字符串,因此运行时为O(n 2 log |Σ|)。< / p>
那就是说,我认为你可以通过更间接的路线加快速度。三元搜索树可以被认为是trie,其中每个节点的子指针存储在二叉搜索树中。如果您只想要所有后缀的trie,您可能需要查看后缀树,后缀树专门用于表示该信息。它们可以在时间O(n)中构建为长度为n的字符串。