字典樹 一種高速插入查詢資料結構

2021-09-07 13:02:51 字數 1152 閱讀 8384

字典樹,又稱單詞查詢樹,trie樹,是一種樹形結構。典型應用是用於統計。排序和儲存大量的字串,所以常常被搜尋引擎系統用於文字詞頻統計。

它的長處是:利用字串的公共字首來節約儲存空間,最大限度的降低無謂的字串比較,查詢效率比雜湊表高。

這個比較經典

就是在每一次邊存的是字元,點標記著個點是否之前的邊的字元都存在

如圖存在的字串有 abc abcd abd。

#include 

#include

#include

#include

using

namespace

std;

int cnt;

struct node

//初始化

}*root;

int insert(char *s)

p=p->next[k];

p->prefix++;

} if(p->id==0)

return p->id=++cnt;

return p->id;

}//插入並分配id

int find(char s)

return p->prefix;

}//查詢此字首是多少人的字首

int x;//記錄總共同擁有多少字串參與了排序

int all[200];//記錄排好序的id

void output(node *p)

for(int i=0;i<26;i++)

} }

}//字串排序

int main()

for(int i=0;iprintf("%d\n",find(s[i]));

} /*排序後*/

x=0;

output(root);

printf("%d\n",x);

for(int i=0;iprintf("%d %s\n",all[i],s2[all[i]]);

} }

一些題及其** 戳

樹 一種資料結構(二)

通過樹形結構的構造,進行組合設計模式 composite 的實現 node作為基類 本身不持有資料,用於維護共同的節點結構 class node protected node size t id,boost shared ptrp parent p id id 通過建構函式傳遞進來的父類指標建立與其...

Trie樹 一種NB的資料結構

最近在做一些題的時候更加理解到為什麼有一句話叫做程式 演算法 資料結構,可能之前的一些題我用 最基本的資料型別加上一些 意想不到 的演算法就可以解決,但是往往一些問題,佐以精妙的資料結構能讓人事半功倍。字典樹,是一種 樹形結構 是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的 字串 但不僅限...

Trie 字首樹 字典樹 單詞查詢樹(資料結構)

在寫完了kmp演算法的部落格之後,我下定決心,一定要寫出一篇關於 ac自動機的部落格 ac自動機實際上就是字典樹上的kmp演算法。所以,考慮到廣大同學不一定會寫trie樹,特此在此處寫了一篇文章介紹介紹這種資料結構。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用...