日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构与算法 / 字符串匹配 / Trie 树

發布時間:2024/10/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法 / 字符串匹配 / Trie 树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、誕生原因

傳統字符串比較時,需要將待比較的字符串與字符串集合中每一個串進行比較,結果比較浪費時間。

Trie 樹的發明就是為了解決上述問題。

二、基本信息

又稱字典樹,是一種樹形結構,是一種哈希樹的變種。

三、原理

通過樹形結構,將字符串集合中各個串的前綴統一為一個,這樣每次查找串時相同的前綴的串僅需要比對同一個前綴就行了。

栗子:假如字符串集合中僅僅包含 26 個英文字母并且都為小寫,那么該字符串集合組成的 Trie 樹的部分如下圖所示:

每個節點實際上是一個包含 26 個元素的數組,數組的索引是字符的 Ascii 碼值 - a 字符的 Ascii 碼值的差值,栗子:b - a = 98 - 97 = 1,這樣就找到了 b 元素對應的下一個節點的 a 字符元素所在的節點。

上圖中每一個(子節點 n),都是包含了 26 個元素的數組,每個元素有可能有子節點,有的有可能是 null,為 null 就說明當前的字符串到此為止。

根據上述說明可以知道,Trie 樹查找是十分高效的,但是建 Trie 樹是比較耗費時間的,并且相當耗費內存,是一個明顯以空間換時間的策略。

四、時間復雜度

  • 建 Trie 樹的過程的時間復雜度為 O(n),n 為字符串集合中所有字符的數量,即:所有的字符串長度和。

  • 匹配字符串的時間復雜度為 O(k),k 為待匹配的字符串的長度。

  • 五、應用場景

    搜索引擎中,輸入部分的字符之后其下拉列表可以顯示出以當前字符串為前綴的部分完整的字符串。其原理是后臺早在之前就已經創建了 Trie 樹,當用戶輸入了部分字符串前綴時,系統直接搜索 Trie 樹,到達前綴最后的節點之后,將該節點之后字符串羅列出來就完成了上述功能。

    ?

    參考:極客時間《數據結構與算法之美》王爭

    這門課真心推薦,內容很經典、栗子很形象,里面還包含了很多面試題目。真是居家旅行必備良藥。

    ?

    (SAW:Game Over!)

    總結

    以上是生活随笔為你收集整理的数据结构与算法 / 字符串匹配 / Trie 树的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。