Tries树的简单介绍

 时间:2024-10-17 22:17:19

Tries树有很多名称,比如字典树、前缀树等,可以存储一些有序的数据,比如单词。一个节点的所有子节点具有相同的前缀又称前缀树。可以用于单词搜索,拼写校准,下面进行简单的介绍。

工具/原料

c++

方法/步骤

1、用字符集{bear,bid,sun,sunday}构建的Tries树如图所示。特点:根节点不存储字符,除根节点外每个字符包含字符。从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串每个单词的公共前缀作为一个字符节点保存。

Tries树的简单介绍

2、Tries实现方式。Tries可以通过二维数组,链表,二叉树等结构实现。

Tries树的简单介绍

3、Tries节点的结构。JAVA实现方式classTrieNode{咯悝滩镞//RlinkstonodechildrenprivateTrieNo颊俄岿髭de[]links;privatefinalintR=26;privatebooleanisEnd;publicTrieNode(){links=newTrieNode[R];}publicbooleancontainsKey(charch){returnlinks[ch-'a']!=null;}publicTrieNodeget(charch){returnlinks[ch-'a'];}publicvoidput(charch,TrieNodenode){links[ch-'a']=node;}publicvoidsetEnd(){isEnd=true;}publicbooleanisEnd(){returnisEnd;}}

Tries树的简单介绍

4、插入操作Java实现:classTr坡纠课柩ie{privateTrieNoderoot;publicTr足毂忍珩ie(){root=newTrieNode();}//Insertsawordintothetrie.publicvoidinsert(Stringword){TrieNodenode=root;for(inti=0;i<word.length();i++){charcurrentChar=word.charAt(i);if(!node.containsKey(currentChar)){node.put(currentChar,newTrieNode());}node=node.get(currentChar);}node.setEnd();}}

Tries树的简单介绍

5、时间复杂度最坏情况O(N);N为节点的个数。搜索与插入操作的时间复杂度:O(p)。p为单词的长度。

Tries树的简单介绍

6、应用:Trie树的应用有很多,比如说拼写矫正,单词自动补充完整,IP路由的最长前缀匹配等。

Tries树的简单介绍

Tries树的简单介绍

滋阴猪蹄枸杞墨鱼汤 如何打开微信收款到账语音提示(两种最新方法) 怎样利用手机积分 cal手机哪里生产的 微信钱包怎么转账?
热门搜索
中国美女性感图片 小学美术作品图片 保存图片快捷键 温馨家的图片 kk高清电影