學習筆記 字典樹

2021-09-19 23:35:29 字數 1191 閱讀 3952

字典樹又稱單詞查詢樹,其利用了字串的公共字首來減少查詢時間,查詢效率比較高。

然後如下圖建樹(有點醜,莫介意)。

每個父親節點都有26個(假設只需要查詢a-z)兒子,從a-z,樹建好了。

然後我們定義乙個陣列tree[i][j],陣列的i為第i個節點,j為第j個兒子.

第幾個節點怎麼看呢?比如上圖我們要插入字串ab,ac,da.遵循先到先得的規則,假設根節點為第0層,那麼插入ab,第1層的a為第乙個節點,第2層的b為第二個節點,第2層的c為第三個節點,第1層的d為第四個節點,第2層的a為第五個節點。

我們要查的是字母,怎麼轉換呢?我們把字元編號id=str[i]-'a',那麼a-z編號就是0-26,第乙個兒子就是a,第二個兒子是b....第26個兒子是z。

int cnt=0;

void add(char a)

cout

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

const int maxn=1e6+100;

int ans;

int tree[maxn][100],tot;

bool flag[maxn];

char str[maxn][20];

void add(char s)

for(int i=0;ipoj 2001 shortest prefixes

#include #include #include #includeusing namespace std;

const int maxn=1e6+100;

char str[maxn][26];

int tree[maxn][26];

int tot;

int sum[maxn][26];

void add(char s)

flag[root]=true;

return f;

}int main()

if(flag1)

puts("no");

else

puts("yes");

}return 0;

}

字典樹學習筆記

參考部落格 字典樹是一種用於統計字串 文字詞頻統計的入門級的資料結構。基本性質 1 根節點不包括字元,除根節點外每乙個節點都只包含乙個字元。2 用邊表示字母 3 從根節點到某一節點,路徑上經過的字元連起來,為該節點對應的字串。4 每個節點的所有子節點包含的字元都不相同,每個節點最多有26個子節點 在...

學習筆記 關於字典樹

字典樹是一種特殊的樹,以下函式是特別儲存的留作以後備用的函式。也是以結點的形式來構建樹,結構體如下 typedef struct node tree,tr 建立字典樹的函式,返回值是樹根的位址,由此字串時鍵鼠並標記為1。tr build tr t,char s,int p t pi for i 0 ...

學習筆記 字典樹(Trie)

日期 2020 08 25 目錄三 碎碎念 字典樹,英文名 trie。顧名思義,就是乙個像字典一樣的樹。可能有些不太形象,那我們舉個栗子叭 比如有乙個 duliu dalao daunting 令人望而生畏的 zhltao 那麼我們可以這麼存 仔細看看的話,其實挺像查字典的 我翻開一本如上的字典,翻...