什麼是不同型別的Trie?
介紹
在本教程中,我們將瞭解不同型別的Trie及其用途。Trie是一種樹狀資料結構,主要用於字串搜尋等操作。Trie有多種型別,根據任務需求選擇使用。通常,Trie主要分為三種類型:標準Trie、壓縮Trie和字尾Trie。我們將詳細解釋每種Trie的含義。
什麼是Trie
Trie是一種排序的二叉樹,也稱為數字樹或字首樹。它具有用於儲存資料或字母的節點。每個節點可以有一個或多個子節點,也可以沒有子節點。最常見的是,Trie用於IP路由和自動搜尋等應用程式。
Trie的型別
Trie主要分為三種類型:
標準Trie
標準Trie是一個排序的Trie,包含根節點和節點。除了根節點外,標準Trie中的每個節點都代表字串中的字母。
所有子節點按字母順序排序,跟蹤字串的路徑是從節點到根。節點的最後一個子節點是字串的結尾。
在標準Trie中,可以透過遵循從節點到其最後一個子節點的路徑來跟蹤字串。
示例 - 字串 S = {cat, car, dog, doll}。
標準Trie具有三種操作 - 刪除、更新和插入。這些操作的複雜度如下:
時間複雜度 O(dm)
空間複雜度 O(n)
其中:
n = 字串大小
m = 字母表大小
d = 操作字串引數大小
標準Trie主要用於字串應用程式,例如單詞匹配和字首匹配。單詞匹配是在字串中查詢集合中類似的單詞,字首匹配是匹配單詞字首的重複。
壓縮Trie
它是標準Trie的壓縮形式。它將標準Trie中相似的字首節點合併為單個子節點。
壓縮Trie的節點至少有兩個子節點。
冗餘節點的壓縮有助於記憶體管理。這種型別的Trie用於需要空間管理的應用程式。
壓縮Trie的空間複雜度為 O(n)。
它的兩個基本操作是插入和刪除。要將新字母插入節點,請取消已分組字母的分組。
要從樹中刪除任何字元,請在刪除後重新分組插入的字元。
例如,字串 S = {bear, bull, boy, stop, sell}
字尾Trie
字尾Trie是Trie的壓縮形式,用於生物資訊學和模式匹配等應用程式。
與其他Trie不同,它將所有後綴壓縮到單個子節點中,同時排除一些字首。
子節點儲存單詞而不是字元。
可以使用字尾Trie構建壓縮Trie。
它是進行子串匹配的有效方法。
從根到葉的路徑表示字尾。
路徑的結尾用 $ 符號表示。
示例 - 字串 S = {ban, apple}
標準Trie、壓縮Trie和字尾Trie之間的區別
序號 |
標準Trie |
壓縮Trie |
字尾Trie |
---|---|---|---|
1 |
它是Trie最基本的形式。 |
它是標準Trie的進階形式。 |
它是一種完全不同的Trie型別,其中字串以壓縮形式儲存。 |
2 |
每個節點及其子節點代表字母 |
冗餘節點被壓縮。 |
用於將字尾插入節點。 |
3 |
最後一個字母由子節點表示。 |
最後一個字母由子節點表示。 |
$ 符號表示節點路徑的結尾。 |
4 |
它支援插入、刪除和搜尋等操作。 |
它支援插入和刪除操作,以及已形成組的分組和取消分組。 |
它支援字尾匹配和搜尋操作。 |
5 |
一個節點可以有一個或多個子節點,也可以沒有子節點。 |
每個節點至少有兩個子節點。 |
每個節點都有單詞的字尾。 |
6 |
它是一種通用的Trie,用於儲存單詞的單個字元。 |
它有助於在合併冗餘節點時最佳化空間。 |
它是一種特殊的Trie型別,有助於檢索字尾。 |
結論
我們已經完成了本教程。在本教程中,我們討論了三種主要的Trie型別:標準Trie、壓縮Trie和字尾Trie。壓縮Trie是標準Trie的進階形式,有助於記憶體管理。每個Trie都有節點和子節點來表示字串。所有三種類型的Trie都用於字串匹配應用程式。我們還討論了這三種Trie型別之間的區別。