字典樹trie樹

2022-05-19 18:53:07 字數 2310 閱讀 2350

目的:已知n個長度不一定相同的母串,以及乙個長度為m的模式串t,求該模式串是否是乙個母串的字首。

時間複雜度:o(m)

特點:犧牲空間換取時間,常用於字串的快速檢索,快速排序與去重,文字的詞頻統計等。

模板

const

int max_n = 10000; //

trie 樹上的最大結點數

const

int max_c = 26; //

每個結點的子結點個數上限

struct

trie

void insert(char *str)

p = ch[p][str[i] - '

a']; //

在 trie 樹上繼續插入字串 str

} cnt[p]++;

}int find(char *str)

p = ch[p][str[i] - 'a'

]; }

return

cnt[p];}};

view code

動態分配記憶體模板

const

int max_n = 10000; //

trie 樹上的最大結點數

const

int max_c = 26; //

每個結點的子結點個數上限

struct

trie

void insert(char *str)

if (ch[p][str[i] - '

a'] == -1)

p = ch[p][str[i] - '

a']; //

在 trie 樹上繼續插入字串 str

} cnt[p]++;

}int find(char *str)

p = ch[p][str[i] - 'a'

]; }

return

cnt[p];}};

view code

自用模板

#include #include 

using

namespace

std;

const

int maxn=10010

;struct

trie

intnewnode()

void insert(char *s)

u=ch[u][s[i]-'a'

]; ++cnt[u];}}

int query(char *s)

u=ch[u][s[i]-'a'

]; }

return

cnt[u];

}}trie;

intmain()

view code

對串的快速檢索 trie樹

串的排序 trie樹+dfs

char

now[max_len];

void dfs(int p, int

len)

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

view code

n個字串,找出最長的len,使得s1到sn中,si是si+1的字首,且si是si+1的字尾

exkmp處理每個字串中哪些長度的字首和字尾相同,trie插入時動態更新最優解,開的trie樹需要動態分配記憶體

#includeusing

namespace

std;

const

int maxn=2e6+10

;int

dp[maxn];

struct

trie

void insert(char *s,int *next,int

idx)

if(ch[p][s[i]-'

a']==-1

)

p=ch[p][s[i]-'a'

];

if(cnt[p])

}cnt[p]=idx;

}}trie;

void getnext(char *s,int *next)

}}char

ch[maxn];

intnext[maxn];

intmain()

int ans=0

;

for(int i=1;i<=n;i++)

cout

return0;

}

view code

Trie樹(字典樹)

trie樹的核心思想是用空間換時間,通過在樹中儲存字串的公共字首,來達到加速檢索的目的。例如,對於一棵儲存由英文本母組成的字串的trie樹,如下圖 trie樹在實現的時候,可以用左兒子右兄弟的表示方法,也可以在每個節點處開設乙個陣列,如上圖的方法。trie樹的主要操作是插入 查詢,也可以進行刪除。插...

字典樹 Trie樹

字典樹 trie樹 顧名思義是一種樹形結構,屬於雜湊樹的一種。應用於統計 排序 查詢單詞 統計單詞出現的頻率等。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。字典樹的結構特點 根節點不代表任何字元。其他節點從當前節點回溯到根節點可以得到它代表的字串。...

字典樹 trie樹

amy 56 ann 15 emma 30 rob 27 roger 52首先存入amy,level 0表示根,不持有資料。其餘每個節點持有乙個字元 葉子節點持有資料,且持有的字元為 0 level 0 root a level 1 m level 2 y level 3 0 56 level 4新...