• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ArcTan

            dfs
            隨筆 - 16, 文章 - 117, 評論 - 6, 引用 - 0
            數據加載中……

            Trie樹

            Trie樹就是字符樹,其核心思想就是空間換時間

            舉個簡單的例子。

            給你100000個長度不超過10的單詞。對于每一個單詞,我們要判斷他出沒出現過,如果出現了,第一次出現第幾個位置。

            這題當然可以用hash來,但是我要介紹的是trie樹。在某些方面它的用途更大。比如說對于某一個單詞,我要詢問它的前綴是否出現過。這樣hash就不好搞了,而用trie還是很簡單。

            現在回到例子中,如果我們用最傻的方法,對于每一個單詞,我們都要去查找它前面的單詞中是否有 它。那么這個算法的復雜度就是O(n^2)。顯然對于100000的范圍難以接受?,F在我們換個思路想。假設我要查詢的單詞是abcd,那么在他前面的單 詞中,以b,c,d,f之類開頭的我顯然不必考慮。而只要找以a開頭的中是否存在abcd就可以了。同樣的,在以a開頭中的單詞中,我們只要考慮以b作為 第二個字母的……這樣一個樹的模型就漸漸清晰了……

            假設有b,abc,abd,bcd,abcd,efg,hii這6個單詞,我們構建的樹就是這樣的。

            對于每一個節點,從根遍歷到他的過程就是一個單詞,如果這個節點被標記為紅色,就表示這個單詞存在,否則不存在。

            那么,對于一個單詞,我只要順著他從跟走到對應的節點,再看這個節點是否被標記為紅色就可以知道它是否出現過了。把這個節點標記為紅色,就相當于插入了這個單詞。

            這樣一來我們詢問和插入可以一起完成,所用時間僅僅為單詞長度,在這一個樣例,便是10。

            我們可以看到,trie樹每一層的節點數是26^i級別的。所以為了節省空間。我們用動態鏈表,或者用數組來模擬動態??臻g的花費,不會超過單詞數×單詞長度。




            posted on 2012-08-22 09:26 wangs 閱讀(2350) 評論(0)  編輯 收藏 引用 所屬分類: ACM-數據結構

            成人国内精品久久久久影院| 亚洲精品99久久久久中文字幕| av色综合久久天堂av色综合在| 亚洲va国产va天堂va久久| 欧美大香线蕉线伊人久久| 99久久精品免费| 狠狠色丁香久久婷婷综合| 狠狠狠色丁香婷婷综合久久五月| 国产伊人久久| 九九久久自然熟的香蕉图片| 久久久久97国产精华液好用吗| 亚洲va久久久噜噜噜久久男同 | 国产成人精品久久一区二区三区| 精品久久久久中文字幕一区| 18岁日韩内射颜射午夜久久成人| 久久se精品一区精品二区| 怡红院日本一道日本久久| 久久亚洲精品无码aⅴ大香| 精品久久久久久国产免费了| 久久精品欧美日韩精品| 色综合久久夜色精品国产| 国产高潮国产高潮久久久91| 久久ZYZ资源站无码中文动漫| 亚洲欧美日韩精品久久亚洲区| 久久最新精品国产| 国产精品久久久久久搜索| 亚洲国产精品无码久久SM| 99久久精品国产一区二区| 久久免费视频6| 看全色黄大色大片免费久久久| 国产精品成人久久久久三级午夜电影| 色综合久久无码五十路人妻| 亚洲欧美成人综合久久久| 亚洲国产精品18久久久久久| 香蕉久久夜色精品升级完成| 久久精品国产亚洲AV忘忧草18| 久久国产亚洲精品| 日韩精品久久久久久免费| 国产精品久久久久jk制服| 人妻精品久久久久中文字幕69| 亚洲香蕉网久久综合影视|