成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)

Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)

熱門標(biāo)簽:無(wú)錫電銷機(jī)器人銷售 招聘信息 南召400電話辦理資費(fèi) 揭陽(yáng)外呼系統(tǒng)公司 熱血傳奇沃瑪森林地圖標(biāo)注 鄭州中國(guó)移動(dòng)400電話申請(qǐng) 去哪里辦卡 地圖標(biāo)注審核工作怎么樣注冊(cè) 福建ai電銷機(jī)器人加盟公司 地圖標(biāo)注植物名稱

1.綜述

又稱單詞查找樹,Trie樹,是一種樹形結(jié)構(gòu),是一種哈希樹的變種。典型應(yīng)用是用于統(tǒng)計(jì),排序和保存大量的字符串(但不僅限于字符串),所以經(jīng)常被搜索引擎系統(tǒng)用于文本詞頻統(tǒng)計(jì)。
它的優(yōu)點(diǎn)是:利用字符串的公共前綴來(lái)節(jié)約存儲(chǔ)空間,最大限度地減少無(wú)謂的字符串比較,查詢效率比哈希表高。

Trie樹結(jié)構(gòu)的優(yōu)點(diǎn)在于:
1) 不限制子節(jié)點(diǎn)的數(shù)量;
2) 自定義的輸入序列化,突破了具體語(yǔ)言、應(yīng)用的限制,成為一個(gè)通用的框架;
3) 可以進(jìn)行最大Tokens序列長(zhǎng)度的限制;
4) 根據(jù)已定閾值輸出重復(fù)的字符串;
5) 提供單個(gè)字符串頻度查找功能;
6) 速度快,在兩分鐘內(nèi)完成1998年1月份人民日?qǐng)?bào)(19056行)的重復(fù)字符串抽取工作。

2.性質(zhì)

它有3個(gè)基本性質(zhì):
1)     根節(jié)點(diǎn)不包含字符,除根節(jié)點(diǎn)外每一個(gè)節(jié)點(diǎn)都只包含一個(gè)字符。
2)     從根節(jié)點(diǎn)到某一節(jié)點(diǎn),路徑上經(jīng)過的字符連接起來(lái),為該節(jié)點(diǎn)對(duì)應(yīng)的字符串。
3)     每個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn)包含的字符都不相同。

3.基本操作

其基本操作有:查找、插入和刪除,當(dāng)然刪除操作比較少見.我在這里只是實(shí)現(xiàn)了對(duì)整個(gè)樹的刪除操作,至于單個(gè)word的刪除操作也很簡(jiǎn)單.

4.實(shí)現(xiàn)方法

搜索字典項(xiàng)目的方法為:
  (1) 從根結(jié)點(diǎn)開始一次搜索;
  (2) 取得要查找關(guān)鍵詞的第一個(gè)字母,并根據(jù)該字母選擇對(duì)應(yīng)的子樹并轉(zhuǎn)到該子樹繼續(xù)進(jìn)行檢索;
  (3) 在相應(yīng)的子樹上,取得要查找關(guān)鍵詞的第二個(gè)字母,并進(jìn)一步選擇對(duì)應(yīng)的子樹進(jìn)行檢索。
  (4) 迭代過程……
(5) 在某個(gè)結(jié)點(diǎn)處,關(guān)鍵詞的所有字母已被取出,則讀取附在該結(jié)點(diǎn)上的信息,即完成查找。
其他操作類似處理
5. Trie原理——Trie的核心思想是空間換時(shí)間。利用字符串的公共前綴來(lái)降低查詢時(shí)間的開銷以達(dá)到提高效率的目的。

6.代碼實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

const int branchNum = 26; //聲明常量
int i;

struct Trie_node
{
       boolisStr;                //記錄此處是否構(gòu)成一個(gè)串。
       Trie_node*next[branchNum];//指向各個(gè)子樹的指針,下標(biāo)0-25代表26字符
       Trie_node():isStr(false)
       {
              memset(next,NULL,sizeof(next));
       }
};

class Trie
{
 public:
     Trie();
     voidinsert(const char* word);
     boolsearch(char* word);
     voiddeleteTrie(Trie_node *root);
       // voidprintTrie(Trie_node *root);   //new add

private:
    Trie_node* root;
 };

Trie::Trie()
{
     root =new Trie_node();
}

void Trie::insert(const char* word)
 {
    Trie_node*location = root;
   while(*word)
     {
       if(location->next[*word-'a'] == NULL)//不存在則建立
         {
           Trie_node *tmp = new Trie_node();
           location->next[*word-'a'] = tmp;
        }  
       location = location->next[*word-'a']; //每插入一步,相當(dāng)于有一個(gè)新串經(jīng)過,指針要向下移動(dòng)
       word++;
    }
   location->isStr = true; //到達(dá)尾部,標(biāo)記一個(gè)串
 }

bool Trie::search(char *word)
{
       Trie_node*location = root;
       while(*word location)
       {
              location= location->next[*word-'a'];
              word++;
       }
       return(location!=NULL location->isStr);
 }

void Trie::deleteTrie(Trie_node *root)
{
       for(i =0; i branchNum; i++)
       {
              if(root->next[i]!= NULL)
              {
                     deleteTrie(root->next[i]);
              }
       }
       deleteroot;
}

void main() //簡(jiǎn)單測(cè)試
{
       Trie t;
       t.insert("a");       
       t.insert("abandon");

       char * c= "abandoned";
       t.insert(c);
       t.insert("abashed");

       if(t.search("abashed"))
       {
          printf("true\n");  //已經(jīng)插入了
       }
}


有時(shí),我們會(huì)碰到對(duì)字符串的排序,若采用一些經(jīng)典的排序算法,則時(shí)間復(fù)雜度一般為O(n*lgn),但若采用Trie樹,則時(shí)間復(fù)雜度僅為O(n)。

Trie樹又名字典樹,從字面意思即可理解,這種樹的結(jié)構(gòu)像英文字典一樣,相鄰的單詞一般前綴相同,之所以時(shí)間復(fù)雜度低,是因?yàn)槠洳捎昧艘钥臻g換取時(shí)間的策略。

下圖為一個(gè)針對(duì)字符串排序的Trie樹(我們假設(shè)在這里字符串都是小寫字母),每個(gè)結(jié)點(diǎn)有26個(gè)分支,每個(gè)分支代表一個(gè)字母,結(jié)點(diǎn)存放的是從root節(jié)點(diǎn)到達(dá)此結(jié)點(diǎn)的路經(jīng)上的字符組成的字符串。

將每個(gè)字符串插入到trie樹中,到達(dá)特定的結(jié)尾節(jié)點(diǎn)時(shí),在這個(gè)節(jié)點(diǎn)上進(jìn)行標(biāo)記,如插入"afb",第一個(gè)字母為a,沿著a往下,然后第二個(gè)字母為f,沿著f往下,第三個(gè)為b,沿著b往下,由于字符串最后一個(gè)字符為'\0',因而結(jié)束,不再往下了,然后在這個(gè)節(jié)點(diǎn)上標(biāo)記afb.count++,即其個(gè)數(shù)增加1.

之后,通過前序遍歷此樹,即可得到字符串從小到大的順序。




實(shí)現(xiàn)代碼如下(g++、VC++都編譯通過):
復(fù)制代碼 代碼如下:

#include iostream>
#include string.h>
using namespace std;
#define NUM 26
class Node
{
public:
    int count; //記錄該處字符串個(gè)數(shù)
    Node* char_arr[NUM];  //分支
    char* current_str;   //記錄到達(dá)此處的路徑上的所有字母組成的字符串
    Node();
};
class Trie
{
public:
    Node* root;
    Trie();
    void insert(char* str);
    void output(Node* node, char** str, int count);
};
//程序未考慮delete動(dòng)態(tài)內(nèi)存
int main()
{
    char** str = new char*[12];
    str[0] = "zbdfasd";
    str[1] = "zbcfd";
    str[2] = "zbcdfdasfasf";
    str[3] = "abcdaf";
    str[4] = "defdasfa";
    str[5] = "fedfasfd";
    str[6] = "dfdfsa";
    str[7] = "dadfd";
    str[8] = "dfdfasf";
    str[9] = "abcfdfa";
    str[10] = "fbcdfd";
    str[11] = "abcdaf";
    //建立trie樹
    Trie* trie = new Trie();
    for(int i = 0; i 12; i++)
        trie->insert(str[i]);
    int count = 0;
    trie->output(trie->root, str, count);
    for(int i = 0; i 12; i++)
        coutstr[i]endl;
    return 0;
}
Node::Node()
{
    count = 0;
    for(int i = 0; i NUM; i++)
        char_arr[i] = NULL;
    current_str = new char[100];
    current_str[0] = '\0';
}
Trie::Trie()
{
    root = new Node();
}
void Trie::insert(char* str)
{
    int i = 0;
    Node* parent = root;
    //將str[i]插入到trie樹中
    while(str[i] != '\0')
    {
        //如果包含str[i]的分支存在,則新建此分支
        if(parent->char_arr[str[i] - 'a'] == NULL)
        {
            parent->char_arr[str[i] - 'a'] = new Node();
            //將父節(jié)點(diǎn)中的字符串添加到當(dāng)前節(jié)點(diǎn)的字符串中
            strcat(parent->char_arr[str[i] - 'a']->current_str, parent->current_str);
            char str_tmp[2];
            str_tmp[0] = str[i];
            str_tmp[1] = '\0';
            //將str[i]添加到當(dāng)前節(jié)點(diǎn)的字符串中
            strcat(parent->char_arr[str[i] - 'a']->current_str, str_tmp);
            parent = parent->char_arr[str[i] - 'a'];
        }
        else
        {
            parent = parent->char_arr[str[i] - 'a'];
        }
        i++;
    }
    parent->count++;
}
//采用前序遍歷
void Trie::output(Node* node, char** str, int count)
{
    if(node != NULL)
    {
        if(node->count != 0)
        {
            for(int i = 0; i node->count; i++)
                str[count++] = node->current_str;
        }
        for(int i = 0; i NUM; i++)
        {
            output(node->char_arr[i], str, count);
        }
    }
}

您可能感興趣的文章:
  • Java中實(shí)現(xiàn)雙數(shù)組Trie樹實(shí)例
  • Python Trie樹實(shí)現(xiàn)字典排序
  • C# TrieTree介紹及實(shí)現(xiàn)方法
  • TrieTree服務(wù)-組件構(gòu)成及其作用介紹
  • 詳解字典樹Trie結(jié)構(gòu)及其Python代碼實(shí)現(xiàn)
  • Trie樹(字典樹)的介紹及Java實(shí)現(xiàn)

標(biāo)簽:桂林 南昌 鹽城 景德鎮(zhèn) 東莞 文山 黔南 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)》,本文關(guān)鍵詞  Trie,樹,字典,字符串,排序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Trie樹_字典樹(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    高h震动喷水双性1v1| 奇米精品一区二区三区| 国产精品久久久久aaaa樱花| 韩国精品一区二区三区| 国产99久久| 俄罗斯性欧美| 欧美片第1页| 久久久久亚洲精品中文字幕| 91麻豆国产精品| 亚洲第一成年网| 国产99在线|亚洲| 在线免费观看h视频| 91精品国产成人| 青青草视频在线观看免费| 国产一区二区视频在线观看免费| 午夜精品电影在线观看| 九九热精品视频在线播放| 国产精品私房写真福利视频| 亚洲黄色免费电影| 亚洲成人激情视频| 爱豆国产剧免费观看大全剧苏畅| 国产一区二区成人久久免费影院| 亚洲欧洲日韩综合一区二区| 东京热加勒比无码少妇| 欧美性受xxxx黑人爽| 菠萝蜜视频在线观看www入口| 欧美va天堂在线| 亚洲第一成人av| 26uuu色噜噜精品一区| 国产精品一区二区三区四区在线观看| 图片区亚洲欧美小说区| 亚洲在线观看网站| 成年女人毛片| 一区二区小说| 2019年中文字幕| blacked蜜桃精品一区| 91精品啪在线观看国产81旧版| 成人免费淫片aa视频免费| 美女把腿扒开让男人桶免费| 一级黄色在线视频| 91好色先生tv| 日本亚洲欧美| 狠狠人妻久久久久久综合麻豆| www.激情网.com| 麻豆av免费在线| 欧美一区二区啪啪| 中文字幕永久免费| 国产精品超碰| 国产精品www.| 2019男人天堂| 91精品久久久久久久久不口人| 亚洲精品在线三区| 成年人看片网站| 亚洲电影第三页| 欧美精品一区二区三区涩爱蜜| jizzjizz亚洲中国少妇| 久久久国产在线视频| 豆国产97在线 | 亚洲| 国产亚洲欧美精品久久久www| 亚洲精品99久久久久中文字幕| 第一页在线视频| 99精品视频在线观看| 制服丝袜日韩国产| 亚洲综合国产精品| 老妇女50岁三级| 国产一区二区三区四区hd| 国产精区一区二区| 青青青在线视频免费观看| 欧美大片免费看| 另类小说一区二区三区| 日本午夜精品久久久| 日韩三区在线观看| 亚洲欧洲在线观看| 在线成人综合色一区| 精品无人乱码一区二区三区的优势| 中文字幕日韩一区二区| 加勒比精品视频| 久久精品在线免费视频| www.爱久久.com| 亚洲一区二区三区免费视频| 欧美偷窥清纯综合图区| 蜜桃91在线| 无码av中文一区二区三区桃花岛| 黄色一级免费大片| 男人靠女人免费视频网站| 精品国产九九九| 精品国产aⅴ一区二区三区东京热| 色综合久久综合网97色综合| 9.1麻豆精品| 717影院理论午夜伦不卡久久| 老汉色影院首页| 99免费在线观看| 久草在线最新视频| 迷人的保姆韩国| 亚洲一区二区三区四区的| 丰满少妇xoxoxo视频| 蜜臀aⅴ国产精品久久久国产老师| 欧美丝袜足交| 成人午夜sm精品久久久久久久| 亚洲综合免费观看高清在线观看| 国产在线观看精品一区二区三区| 精品日韩毛片| 99国产精品久久久久久久成人| 日本精品一区二区在线观看| 国产精品v日韩精品v欧美精品网站| 成人黄色一级视频| 狠狠色丁香久久婷婷综合_中| 七七成人影院| 亚洲欧美国产精品va在线观看| 欧美日韩在线观看视频小说| 亚洲一级片免费观看| 国产精品久久久久久久久久东京| 色婷婷**av毛片一区| 87福利电影网| 久久成人精品电影| 国产香蕉精品视频一区二区三区| 日韩国产成人在线| 亚洲va韩国va欧美va精四季| 在线精品视频免费观看| 日本免费福利视频| 国产日韩高清在线| 中文字幕一区二区人妻| 日韩欧美aⅴ综合网站发布| 久久尤物电影视频在线观看| 曰韩不卡视频| 黄色av中文字幕| 性一交一乱一伧老太| 国产精品亚洲天堂| 欧美国产另类| 青娱在线视频| 日本天堂在线观看| 在线免费看黄色片| 久热综合在线亚洲精品| www.久久热.com| 99精品全国免费观看| 久草热在线观看| 免费一区二区在线观看| 136导航精品福利| 在线欧美三区| 国产成人福利短视频app| 婷婷激情成人| 欧美成人性战久久| 日本日本19xxxⅹhd乱影响| 亚洲色欲综合一区二区三区| 欧洲人成人精品| 色综合久久中文| 久久99精品久久久久久青青91| 国产精品一区免费在线观看| 高清av一区二区三区| 女人让男人操自己视频在线观看| 日韩中文字幕第一页| 日本亚洲导航| 亚洲免费观看高清完整版在线观看熊| 在线观看福利片| 欧美成人一二三区| 在线欧美一区二区| 91一区二区三区在线| 国产精品久久久精品a级小说| 久草免费在线观看| 天天色av.com| 中文视频一区视频二区视频三区| 天美一区二区三区| 成人少妇影院yyyy| 日本免费网站在线观看| 影音先锋中文一区| 欧美一区二区三区四区五区六区| 亚洲精品国精品久久99热一| 亚洲精品视频免费在线观看| 热久久天天拍国产| 国产精品美女久久久久久| 校园春色另类视频| 丁香五月缴情综合网| 欧美黑人粗大| 草草影院第一页| 在线观看91精品国产麻豆| 日本欧美大码aⅴ在线播放| 久久久久久国产免费| 久久99精品视频| 又色又爽又高潮免费视频国产| 国产成人三级在线观看| 亚洲男同gay网站| 黄色的毛片免费| 这里只有视频精品| 麻豆changesxxx国产| 一个人看的www在线免费视频| 色yeye免费人成网站在线观看| 欧美三级在线观看视频| 欧美三区美女| 黄页网站在线| 欧美日韩亚洲国产| 欧美亚洲在线视频| 激情综合网俺也去| 亚洲欧美在线人成swag| 欧美久久久久久久久久久| av在线看网址| 亚洲大肥女ass| 国精产品乱码一区一区三区四区| 麻豆一区二区三区四区精品蜜桃| 久久久久久免费看| 午夜久久福利| 国产福利微拍精品一区二区| 中文在线资源在线| 国产精品日产欧美久久久久| 国产欧美成人xxx视频| 精品伦理一区二区三区| 成人福利在线看| 国产区精品在线| 色欲一区二区三区精品a片| 久久香蕉国产线看观看av| 亚洲综合中文字幕在线| 日韩视频一区二区三区| 亚洲电影一级片| 精品国内自产拍在线视频| 国产精品v日韩精品v在线观看| 91精品国自产在线观看| 中文在线字幕免费观看| 亚洲国产成人精品一区二区| 久久视频免费| 黄色三级视频片| 久久久久久免费| xnxx国产精品| 小泽玛利亚一区二区三区视频| 久久精品aaaaaa毛片| 久久成人亚洲精品| 国产精品久久久久蜜臀| 国产亚洲精品成人av久久ww| 国产乱码一区二区三区四区| 国产日韩三级在线| 国产原创在线观看| 欧美日韩国产色综合一二三四| 麻豆国产在线视频| 精品中文字幕一区| 黄网站app在线观看大全免费视频| 亚洲图区综合网| 午夜91在线| 日韩欧美一区二区久久婷婷| 日本19禁啪啪吃奶大尺度| 精品人妻一区二区色欲产成人| 狠狠色丁香婷婷综合久久片| 悠悠资源av网站| 精品精品国产毛片在线看| 高清在线一区二区| 久久综合九色| 亚洲2区在线| 亚洲精品乱码久久久久久| 在线综合视频| 精品久久久久久久久久久久久久久久| av成人动漫| 国产偷人爽久久久久久老妇app| 成人国产精品久久久网站| 欧美日韩国产亚洲一区| 色爱精品视频一区| 不卡一区二区三区四区五区| 樱桃国产成人精品视频| 中文国语毛片高清视频| 久久综合成人| 亚洲v片在线观看| 在线观看免费高清视频| 国产激情网址| 国产免费一区二区视频| 黄色a级片免费| 在线免费看91| 日韩精品福利一区二区三区| 激情图片在线观看高清国产| 欧美一级淫片免费视频黄| 国产精品白丝av| 欧美一区二区美女| 亚洲成aⅴ人片久久青草影院| 国产一区二区三区三州| 亚洲国产女人aaa毛片在线| av白虎一区| 日韩天堂在线视频| 亚洲伊人第一页| 人人妻人人澡人人爽人人精品| 亚洲午夜激情网站| 91精品国产乱码久久久久久| 日韩一级免费毛片| 久草视频在线免费看| 丁香啪啪综合成人亚洲小说| 天天av综合| 久久精品成人欧美大片免费| xxx一区二区| 国产欧美日韩综合一区在线播放| 欧美日韩一区二区三区在线| 欧美日韩国产美女| 97xxxxx| 日韩精品中文字幕在线观看| 亚洲视频一区二区三区四区| 国产熟女高潮一区二区三区| www.色日本| 国产午夜福利一区二区| 国产亚洲欧洲一区高清在线观看| 久久视频国产| 视频区 图片区 小说区| 成人欧美在线视频| av午夜在线| 国产欧美一区视频| 丝袜美腿高跟呻吟高潮一区| 久久久久久国产精品美女| 欧美 日韩 激情| 欧美激情自拍偷拍| 免费在线观看成年人视频| 视频一区在线视频| 日韩精品中文在线观看| 91在线视频观看| 岛国一区二区在线观看| 777久久久精品| 风间由美性色一区二区三区四区| 国产日韩中文在线中文字幕| 激情综合网址| 成人亚洲视频在线观看| 海角社区69精品视频| 国产精品久久久久久av下载红粉| 久久久久久久久久一区二区三区| 天天干天天操天天玩| 欧美激情在线| 国产精品免费av| 福利视频网站| 无码人妻丰满熟妇啪啪网站| 丰满少妇久久久久久久| wwwxxx国产| 成人福利网址| 中文字幕成人在线| 中文在线观看免费高清| 91久久国语露脸精品国产高跟| 日本成人精品| 天天av导航| 亚洲精品自在久久|