以連結串列為例,插入資料很簡單,就是將最後節點的next指向新節點,時間演算法為O(1)常數級,但是查詢的時候需要挨個遍歷比較,通常為O(N)級別!
而一顆平衡樹,查詢和插入都是O(log2N)級,O(N)和O(lon2N)在資料量十分巨大的時候有著天壤之別的效率差異,比如N為65536(2的16次方)的時候,連結串列查詢平均查詢是3萬多次,而平衡樹只需要16次,效率相差很大!
樹結構通常包括:二叉樹,二叉查詢樹,紅黑樹,2-3樹,帶B的樹(B,B-,B+,B*),字典樹等。
回到題目中來,資料結構中的樹結構有哪些實際用例呢?
①,紅黑樹:JAVA8中的hashMap滿足一定的閾值,自動擴容時會變為紅黑樹,treeMap,linux中的epoll模型,nginx中的Timer管理等。
②,B,B+樹:廣泛用於資料庫(mysql,oracle等)的索引。
④,生活中的樹狀結構有公司職級關係,國家省市區級聯,族譜等等都有樹結構形式!
可以說,樹形結構是學習資料結構的路上不可或缺的一環,掌握樹形結構的原理,設計能對我們的高效能設計理念有著舉足輕重的作用,還有更多的技術分享,敬請關注。。。
以連結串列為例,插入資料很簡單,就是將最後節點的next指向新節點,時間演算法為O(1)常數級,但是查詢的時候需要挨個遍歷比較,通常為O(N)級別!
而一顆平衡樹,查詢和插入都是O(log2N)級,O(N)和O(lon2N)在資料量十分巨大的時候有著天壤之別的效率差異,比如N為65536(2的16次方)的時候,連結串列查詢平均查詢是3萬多次,而平衡樹只需要16次,效率相差很大!
樹結構通常包括:二叉樹,二叉查詢樹,紅黑樹,2-3樹,帶B的樹(B,B-,B+,B*),字典樹等。
回到題目中來,資料結構中的樹結構有哪些實際用例呢?
①,紅黑樹:JAVA8中的hashMap滿足一定的閾值,自動擴容時會變為紅黑樹,treeMap,linux中的epoll模型,nginx中的Timer管理等。
②,B,B+樹:廣泛用於資料庫(mysql,oracle等)的索引。
④,生活中的樹狀結構有公司職級關係,國家省市區級聯,族譜等等都有樹結構形式!
可以說,樹形結構是學習資料結構的路上不可或缺的一環,掌握樹形結構的原理,設計能對我們的高效能設計理念有著舉足輕重的作用,還有更多的技術分享,敬請關注。。。