我不知道這是不是問問算法的地方。但讓我們看看,如果我得到任何答案... :)Python中的Trie(前綴樹)
如果有什麼不清楚我很高興澄清事情。
我剛剛在python中實現了一個Trie。然而,有一點似乎比它應該更復雜(就像一個熱愛簡單的人)。也許有人有類似的問題?
我的目標是通過在其根中存儲子樹的最大公共前綴來最小化節點數。例如,如果我們有話計算器,stackbase和stackbased,則樹會是這個樣子:
[s]tack
[o]verflow ______/ \_______ [b]ase
\___ [d]
注意,仍然可以認爲有一個字符邊緣(在第一個孩子節點)。
查找 - 查詢很容易實現。 插入並不難,但有些較複雜的比我想.. :(
我的想法是插入後,其他的按鍵一個(從空開始特里),通過爲將要優先搜索(k)(查找(k)),然後在查找過程停止的地方對節點進行本地重新排列/分割,結果爲4種情況:設k是我們想要插入的密鑰和k '是節點,在此處搜索結束)的關鍵
- k是相同的k'
- k是一個「適當的」前綴k'
- k'是k的「適當」前綴k和k'共享一些共同的前綴,但情況(1),(2)或3)發生。
似乎每個案例都是獨一無二的,因此意味着Trie的不同修改。但是:這真的很複雜嗎?我錯過了什麼嗎?有更好的方法嗎?
謝謝:)
在國家標準與技術研究院網站上有一些Patricia嘗試實現(http://www.itl.nist.gov/div897/sqg/dads /HTML/patriciatree.html) – 2009-06-07 02:19:11
感謝Jason的參考和建議!哈希也可能是一個很好的技術,當它變得密集時。但讓我們保持簡單的插入:) – jacob 2009-06-07 03:01:53
感謝凱西的鏈接。 – jacob 2009-06-07 03:02:12