码迷,mamicode.com
首页 > 其他好文 > 详细

Trie

时间:2019-12-27 09:15:47      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:height   image   使用   bsp   OLE   字母   class   boolean   字典   

目录

 

1 什么是Trie

Trie:字典树、前缀树;其特点不再是普通树中的二叉结构而是多叉结构。

Trie优点:

适合处理类似通讯录问题,当有n个条目时,使用树结构其查询的时间复杂度为O(logn),使用字典树查询每个条目的复杂度和字典中条目的数量无关只与每个条目的长度相关,其时间复杂度为O(w),w为查询的条目(字符串)的长度。

Trie结构:

技术图片

每个节点有若干(具体数目根据不同语境得出)个指向下个节点的指针,其构造代码如下:

class Node{
    //每个节点装载字符
    char c;
    //利用map映射,便可以不用固定一个节点到底会有多少子节点
    Map<Character,Node> next;
}

对上面的进行优化:

(1)考虑搜索过程,当我们来到根节点要向下寻找时其实本质上我们已经知道了下一个字母所在的节点位置;

 

(2)英文中有些单词可能是长单词的前缀,比如pan和panda这样还需要标记一下当前节点是不是单词

技术图片

 

class Node{
    //是否是单词的标记
    boolean isWorld;
    //不需要额外存储节点
    Map<Character,Node> next;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

Trie

标签:height   image   使用   bsp   OLE   字母   class   boolean   字典   

原文地址:https://www.cnblogs.com/youngao/p/12105424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!