一、二叉樹實際應用場景
1、哈夫曼編碼,來源于哈夫曼樹(給定n個權值作為n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為優異二叉樹,也稱為赫夫曼樹(Huffman tree)。即帶權路徑長度最短的樹),在數據壓縮上有重要應用,提高了傳輸的有效性,詳見《信息論與編碼》。
2、海量數據并發查詢,二叉樹復雜度是O(K+LgN)。二叉排序樹就既有鏈表的好處,也有數組的好處, 在處理大批量的動態的數據是比較有用。
3、C++ STL中的set/multiset、map,以及Linux虛擬內存的管理,都是通過紅黑樹去實現的。查找最大(最小)的k個數,紅黑樹,紅黑樹中查找/刪除/插入,都只需要O(logk)。
4、B-Tree,B+-Tree在文件系統中的目錄應用。
5、路由器中的路由搜索引擎。
延伸閱讀:
二、什么是哈希值(hash code)
哈希值是一個int類型的整數。每個元素都應該有自己的哈希值,并且這個值是少數的。即滿足:
A.如果元素a與元素b相等,則元素a的哈希值與元素b的哈希值相等。
B.如果元素a與元素b不相等,則元素a的哈希值與元素b的哈希值不相等。
通常情況下,對于int,bool,double,string等語言自帶的類型都有自己的哈希值,可以用它們的哈希函數來獲取,不同語言的哈希函數可能會不同。
如果是用戶自己新建的類型,則需要提供計算此類型元素哈希值的哈希函數。
在哈希表中,我們是通過某元素的哈希值來查找、添加或刪除元素的。