字典樹(Trie樹)

2021-09-22 13:53:31 字數 1295 閱讀 7631

字典上是一種樹形結構,是利用字串的公共字首來節約儲存空間,最大限度減少無謂的字串比較。

trie樹特點:

根節點不包含任何字母,其他每個結點都包含乙個字母;

每個結點的所有兒子包含的字母各不相同;

從根節點到某個結點,路徑上的字母依次連線起來所構成的字母序列稱為該結點對應的單詞;

用給定的單詞:i、is、he、her、man、map、she。

一、由這些所構成的字典上如下(插入操作):

根節點不包含任何字母,標記每個單詞的最後乙個字母,用於查詢這個單詞;

二、判斷map是否在字典樹上(查詢操作):

沿著m->a->p找到單詞map所在位置,單詞最後乙個字母p在字典樹上被標記,說明找到了這個單詞;

三、刪除字典樹上的單詞her

沿著h->e->r找到單詞her所在位置,將單詞最後乙個字母r在字典樹中的標記清除,就相當於刪除了這個單詞;

四、判斷her是否在字典樹上

沿著h->e->r找到單詞her所在位置,單詞最後乙個字母r在字典樹上沒被標記,說明沒找到了這個單詞,證明上一步的刪除操作有效;

字典樹插入、刪除、查詢等操作模板:

const int maxn = 26;

struct node

t->flag=true; //將單詞最後乙個字母標記

return trie;

}bool search(node *trie,char s)//查詢操作

if(t->flag) //判斷最後乙個單詞是否有標記

return true;

return false;

}node *erase(node *trie,char s)//刪除操作

t->flag=0; //刪除單詞最後乙個字母的標記

return trie;

}void del_trie(node *trie)//清空字典樹

delete trie;

}

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新...