Trie字典樹模板及栗子

2021-08-19 09:57:54 字數 1950 閱讀 9704

陣列的實現:

#include #include #include #include #include #include #include using namespace std;

const int n = 1000000;

int ch[n][26],val[n],tot;

//陣列實現的話,總是拿不準ch陣列的大小,我們不確定生成的節點會有多少

void init()

void insert(char *s,int x)

u = ch[u][v];

}val[u] = x;//結尾位置設定為權重,其餘位置都設定為0

}int find(char *s)

return val[u];

}void del(char  *s)

val[u] = 0;//刪除時就是將最後乙個位置的權值設定為0

}

指標實現

#include #include #include #include #include #include #include using namespace std;

//指標實現較為方便,並且也很容易理解

struct trie

;trie *root;

void init()

void insert(char *s)

p = p->next[v];

}p->val = 1;

}int find(char *s)

return p->val;

}void del(trie *s)

hdu 1251

#include#include#include#include#include#includeusing namespace std;

const int n = 1000000;

int sz;

int ch[n][26];

int val[n];

struct trie

int idx(char c)

void insert(char *s,int v)

u = ch[u][c];

val[u] ++;}}

int read(char *s)

if(val[u] == 0)

return 1;

else

return 2;

}int get_num(char *s)

return val[u];

}};int main()

while(gets(s))

return 0;

}

hud 1075

#include #include #include #include #include #include #include using namespace std;

struct trie

;trie *root;

void init()

void insert(char *s,char *str)

p = p->next[v];

}p->val = new char[11];

strcpy(p->val,str);

}void find(char *s)

}if(p->val) printf("%s",p->val);

else printf("%s",s);

}void del(trie *s)

delete s->val;

delete s;

}int main()

char str[3100],part[100];

while(gets(str) && strcmp(str,"end"))

}puts("");

}}

字典樹(Trie樹)模板

結構 struct node head 生成節點 動態分配記憶體 node newnode 靜態分配記憶體 node t 1000000 int t 0 node newnode 注意 1 在此之前head一定要先分配,否則無法執行,這裡自己老是出錯。2 還有如果處理多組資料的話一定要注意清空t陣列...

Trie字典樹 模板整理

首先附上學習字典樹參考的部落格鏈結 字典樹,又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字元 串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊...

trie字典樹 模板題

字典樹是一種實現字串快速檢索的多叉樹結構。每個節點都擁有很多個指標。1 include 2 include 3 using namespace std 4 5 const int n 1e6 5,m 5e5 5 6 7 int trie m 26 tot 0,cnt m 陣列模擬樹,8 cnt i ...