AVL樹,紅黑樹衡载,B樹搔耕,B+樹,Trie樹都分別應(yīng)用在哪些現(xiàn)實(shí)場景中痰娱?
參考知乎知友的回答AVL樹弃榨,紅黑樹,B樹梨睁,B+樹鲸睛,Trie樹現(xiàn)實(shí)應(yīng)用場景
- AVL樹:windows對進(jìn)程地址空間的管理用到了AVL樹。
-
紅黑樹:維護(hù)AVL樹這種高度平衡所付出的代價(jià)比從中獲得的效率收益大坡贺,故而實(shí)際的應(yīng)用不多官辈,更多的地方是用追求局部而不是非常嚴(yán)格整體平衡的紅黑樹。紅黑樹的應(yīng)用比較廣泛遍坟,如:
1) 著名的linux進(jìn)程調(diào)度Completely Fair Scheduler,用紅黑樹管理進(jìn)程控制塊
2)epoll在內(nèi)核中的實(shí)現(xiàn)拳亿,用紅黑樹管理事件塊
3)nginx中,用紅黑樹管理timer等
4)Java的TreeMap愿伴、TreeSet實(shí)現(xiàn) - B和B+樹:主要用在文件系統(tǒng)以及數(shù)據(jù)庫中做索引等肺魁,比如Mysql:B-Tree Index in MySql
- trie 樹:一個(gè)典型應(yīng)用是前綴匹配,比如在我們輸入時(shí)隔节,搜索引擎會給予提示鹅经。
樹的基本結(jié)構(gòu)有什么區(qū)別呢?
- 通過樹怎诫、二叉樹瘾晃、二叉查找樹、AVL樹刽虹、紅黑樹的定義酗捌,就可以對以上幾種樹的結(jié)構(gòu)有基本的了解。如果想對紅黑樹有深入了解,可以參考:《紅黑樹概念胖缤、紅黑樹的插入及旋轉(zhuǎn)操作詳細(xì)解讀》尚镰、《紅黑樹的移除節(jié)點(diǎn)操作》。
- B-樹和B+樹最經(jīng)典應(yīng)用就是MySQL的索引哪廓,下面通過MySQL索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理狗唉,對B+樹有更深入的了解,同時(shí)如果想對MySQL的索引優(yōu)化有所了解涡真,也可以仔細(xì)讀上面的文章分俯。
- trie樹