Trie樹分析及其查詢的實現

2021-07-22 11:56:13 字數 1344 閱讀 6597

trie樹是在查詢問題中以空間換取時間的做法,時間複雜度為o(n),所以存在空間的大量消耗。

本文trie樹的應用便是查詢某個詞綴在字典中出現的頻率。

1:根節點不儲存任何字元;

2:以某乙個字串結束標誌節點為止,根節點至該節點所構成的路徑內所有節點字元順序構成乙個字串

3:節點的所有子節點應包含不同的字元

1:為方便查詢詞綴出現頻率,在每乙個節點中包含以根節點至該節點所構成詞綴的出現次數(及完成子節點建立或不為null及重複字串);

3:在本文中重複單詞也算不同單詞計算頻率(做過的一道acm題中出現,所以本文中**也將重複單詞作為不同單詞處理,當然在實際應用中,為避免重複單詞的插入,在插入之前可進行查詢操作,避免重複插入)

問題描述如下:

輸入的第一行為乙個正整數n,表示詞典的大小,其後n行,每一行乙個單詞(不保證是英文單詞,也有可能是火星文單詞哦),單詞由不超過10個的小寫英文本母組 成,可能存在相同的單詞,此時應將其視作不同的單詞。接下來的一行為乙個正整數m,表示詢問的次數,其後m行,每一行乙個字串,該字串由不超過10個的小寫英文本母組成,表示乙個詢問。

輸出:對於每乙個詢問,輸出乙個整數ans,表示詞典中給出的字串為字首的單詞的個數。

接收到查詢詞綴,從根節點開始,迴圈查詢,若在trie樹中不存在該詞綴,返回0,若有,繼續查詢下一字元,直至詞綴結束,返回此時所在節點的統計頻率值。

簡單實現**如下:

Trie樹及其應用

一,知識簡介 trie樹,又稱單詞查詢樹 鍵樹或字首樹。典型應用是用於排序和統計大量字串,但不僅限於於字串,所以經常被搜尋引擎用於文字詞頻統計。它的優點是 最大限度的減少無謂的字串比較,查詢效率比雜湊表高。字典樹的核心思想是以空間換時間,利用字串的公共字首來降低查詢時間開銷來達到提高效率的目的。tr...

trie字母查詢樹java實現

1 實現單詞插入並統計插入次數 2 實現查詢單詞是否存於字母查詢樹中 3 實現自動補全提醒 注意 1 只支援全小寫字母單詞 2 查詢時間複雜度為log h h為單詞長度 3 插入時間複雜度為log h h為單詞長度 4 空間複雜度小於所有字母個數 結點 package bin.tree.trie 字...

Trie樹的實現

一 定義 trie,又稱字典樹,是一種用於快速檢索的二十六叉樹結構。典型的空間換時間 二 結構圖 三 原理 特別地 和二叉查詢樹不同,在trie樹中,每個結點上並非儲存乙個元素。四 性質 0 利用串的公共字首,節約記憶體 1 在trie樹上進行檢索總是始於根結點 2 根節點不包含字元,除根節點外的每...