Trie树介绍:
Trie树,称为单词前缀树,字典树,是一种用于快速检索的多叉树结构
核心思想:
空间换时间,利用字符串的公共前缀来最大限度地减少无所谓的字符串比较,从而降低时间复杂度。
基本性质:
1.根节点不包含字符,除根节点外的每条边对应一个字符
2.从根节点到某一个节点,将边上的字符连起来,会得到该节点对应的前缀
3.每个节点对应的前缀都不相同
Trie树的编程实现
1.Trie树节点的定义:
struct Trie
{
int count;
Trie *childs[26];
bool last ;
Trie()
{
count=0;
int i;
for(i=0;i<26;i++)
childs[i]=NULL;
last = false ;
}
};
Trie *root=new Trie;
说明:
childs[i]:表示当前节点基于第i个字符的边,如果不存在,则其值为NULL;否则指向经过这个字符转移的下一个节点
count:使用到该节点的前缀的单词数量
Trie():构造函数,将节点中的count的数量和childs数组初始化
Trie *root = new Trie :使用new动态分配一个存储空间,并让root指向该空间
2.Trie树的插入:
void insert(char *str)
{
int i,m;
current=root;
for(i=0;i<strlen(str);i++)
{