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

Trie树

时间:2014-09-18 00:35:43      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   div   sp   log   on   

Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。

下面以单词为例,插入、查找和删除实现

#define MaxN 26
typedef struct TrieNode
{
    bool isStr; //标记是否构成单词
    struct TrieNode *next[MaxN];
}Trie;

void InsertWords(Trie *root, const char *s)
{
    if(root == NULL || *s == \0)
        return;
    Trie *p = root;
    while(*s != \0)
    {
        if(p->next[*s-a]==NULL)
        {
            Trie *temp = new Trie();
            for(int i = 0; i< MaxN; i++)
            {
                temp->next[i] = NULL;
            }
            temp->isStr = false;
            p->next[*s-a] = temp;
            p = p->next[*s-a];
        }
        else
        {
            p = p->next[*s-a];
        }
        s++;
    }
    p->isStr = true;
}

int SearchWord(Trie *root, const char *s)
{
    Trie *p = root;
    while(p != NULL && *s != \0)
    {
        p = p->next[*s-a];
        s++;
    }
    return (p != NULL && p->isStr == true);
}

void delTrie(Trie *root)
{
    for(int i = 0; i < MaxN; i++)
    {
        if(root->next[i] != NULL)
            delTrie(root->next[i]);
    }
    delete root;
}

 

Trie树

标签:style   blog   color   ar   for   div   sp   log   on   

原文地址:http://www.cnblogs.com/awy-blog/p/3978321.html

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