基數樹
插入、刪除
radix Tree(基數樹) 其實就差不多是傳統的二叉樹,只是在尋找方式上,利用比如一個unsigned int的類型的每一個比特位作為樹節點的判斷。插入:
我們在插入一個新節點時,我們根據數據的比特位,在樹中向下查找,若沒有相應結點,則生成相應結點,直到數據的比特位訪問完,則建立葉節點映射相應的對象。
刪除:
我們可以“惰性刪除”,即沿着路徑查找到葉節點后,直接刪除葉節點,中間的非葉節點不刪除。
應用
Radix樹在Linux中的應用:
Linux基數樹(radix tree)是將long整數鍵值與指針相關聯的機制,它存儲有效率,並且可快速查詢,用於整數值與指針的映射(如:IDR機制)、內存管理等。后記
Radix樹與Trie樹的思想有點類似,甚至可以把Trie樹看為一個基為26的Radix樹。(也可以把Radix樹看做是Tire樹的變異)
Trie樹一般用於字符串到對象的映射,Radix樹一般用於長整數到對象的映射。
trie樹主要問題是樹的層高,如果要索引的字的拼音很長很變態,我們也要建一個很高很變態的樹么?
radix樹能固定層高(對於較長的字符串,可以用數學公式計算出其特征值,再用radix樹存儲這些特征值)
【相關代碼可以參考】
http://www.cnblogs.com/Bozh/archive/2012/04/15/radix.html
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。