当前位置: 首页 > 科技观察

一篇关于如何实现Trie

时间:2023-03-12 06:38:06 科技观察

的文章本文转载自微信公众号《我好困》,作者萌新。转载此文,好困烦请联系我公众号。Trie,又称字典树,主要用于单词的搜索和命??名。例如字典树中存储一个单词hello的数据结构为:再次添加help时,此时的字典树为:添加hero时,此时的字典树为:可以看到树开头为每个单词的字符都是一个节点,直到字符添加完毕,设置标志标记当前节点结束为一个单词(即从根节点到当前节点为一个单词)。当一个新词进来时,你只需要将它添加到树中。查找时,从根节点开始,遍历整棵树(其实就是遍历树的某个分支)。如果其中一个字符不在树中,则查找失败,否则按每个字符的顺序查找所有单词,最后判断结束节点是否为单词,如果是则查找成功。代码实现//叶子节点typeNodestruct{isWordbool//是否是单词nextmap[uint8]*Node//一个叶子节点对应的单个字符及其下一个指针}typeTriestruct{root*Nodesizeint64}funcConstructor()Trie{returnTrie{&Node{isWord:false,next:make(map[uint8]*Node),},0}}/**添加单词到字典*/func(this*Trie)Insert(wordstring){ifword==""{return}cur:=this.rootfori:=0;i