对于具有“icecream”(包含“i”、“ice”、“cream”、“icecream”)等子词的单词,trie 的结构是什么? “商人”(包含 'bus'、'is'、'business'、'man'、'businessman')。
我知道那些没有像“客栈”这样的子词的人会怎么样,但我对上面的词感到困惑。
提前致谢。
最佳答案
您可以在 trie 节点中使用 bool 值“isTerminal”来指示单词是否在该节点处终止。
因此,所有单词 'bus'、'business' 和 'businessman' 都将从节点 'b' 开始并沿着相同的路径。 's' 代表 'bus'、's' 代表 'business' 和 'n' 代表 'businessman' 的节点将具有 isTerminal = true。
尽管 'man' 包含在 'businessman' 中,但它应该被视为从根和单独路径上的 'm' 子节点开始的单词。
因此,所有单词都严格从顶部字母节点(根的子节点)开始,并在 bool 值 isTerminal=true 指示的不同级别终止。
关于dictionary - 带有子词的词的树状结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29684983/