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 根節點不包含字元,除根節點外的每...