Trie樹,即字典樹,又稱單詞查找樹或鍵樹,是一種樹形結構,是一種哈希樹的變種。
典型應用是用于統計和排序大量的字符串(但不僅限于字符串)。
它的優點是:最大限度地減少無謂的字符串比較,查詢效率比哈希表高。Trie的核心思想是空間換時間。利用字符串的公共前綴來降低查詢時間的開銷以達到提高效率的目的。
它有3個基本性質:
? ? 1.根節點不包含字符,除根節點外每一個節點都只包含一個字符。
? ? 2.從根節點到某一節點,路徑上經過的字符連接起來,為該節點對應的字符串。
? ? 3.每個節點的所有子節點包含的字符都不相同。
注意:不用動態數組或者動態申請空間的話復雜度會達到26^n次方,在建樹的時候最好用動態數組和malloc鏈表。最好不要用結構體進行封裝,有可能會爆棧。
查詢復雜度與樹高有關,基本O(len)
Hash:
hash算法的意義在于提供了一種快速存取數據的方法,它用一種算法建立鍵值與真實值之間的對應關系,(每一個真實值只能有一個鍵值,但是一個鍵值可以對應多個真實值),這樣可以快速在數組等條件中里面存取數據,其實就是一種映射。
Hash最重要就是Hash映射和沖突處理,
Hash可以拿來判重和統計數目,主要把字符串映射為整數,盡量選比較大的素數。