幾種常見的樹的區分:二叉樹、平衡二叉樹、紅黑樹、B樹和B+樹

1.圖和樹的關係

        圖和樹的關係,是認識樹的重要性的重要方法。

        樹是圖的一個子集;圖和樹的最大區分是:有序和無序。

        一個圖可以是各種奇形怪狀的,具有各種奇怪關係的,甚至有完全不相關的部分。圖可以說是對世界本原的抽象,我們認識事物,往往是從一團混亂開始的;我們得到最初的世界的樣子,是一個混亂的圖狀結構。

        而樹,則是有序的。樹有根節點,也就是意味着樹有起始點;樹從根節點出發,確定不同事物的關係,並建立逐級的區分;從根節點,確定子節點、兄弟節點、子孫節點和葉節點。通過樹,我們可以建立一套從頭到尾有序的抽象。

       樹的有序性,讓我們認識事物,有了很好的方法。書籍的編寫,對宇宙星系的認識,對家庭和國家的定義,都是採用了樹的形式。  

2.樹的便利性

       樹的特點是有序性。這給我們認識世界帶來了便利。在計算機科學中,樹也帶來了很多的便利性。

       計算機科學中,樹的便利性在於:

       1)查找的便利性(樹本身有序,使查找方便);

       2)插入數據的便利性;

       3)刪除的便利性。

       樹的便利性在於維護了有序的結構;有序的結構通過要時間代價和空間代價;這就會造成樹的查找時間會在O(logN)左右。很多計算機語言或者文件格式,如XML、JSON、ProtocolBuffer,本質都是樹。

3.幾種樹的區分

       關於幾種樹的區分,我不一一列舉了,因爲太多的博客說了很多細節,我就幾項事情進行區分。

       1)二叉樹:特殊的樹,最多隻有左樹和右樹兩個子樹;有廣度和深度兩大類搜索算法,深度搜索算法包括先根、中根和後根三個算法。

      2)平衡二叉樹:一種特殊的二叉樹,特點是左右子樹高度不超過1;這種樹,好處是維護平衡;壞處是經常發生發生旋轉。

      3)紅黑樹:根節點爲黑,葉節點爲黑的樹;紅黑樹本質是對平衡二叉樹爲維護平衡而不斷旋轉而做的優化,紅黑樹允許的不平衡性是2,所以可以很好得克服平衡二叉樹的爲維護平衡而經常旋轉的問題。紅黑樹是STL裏的map和set的基本結構。

      4)B樹:不是二叉樹;可以有M個子樹,可以不在根節點上找到數據。

      5)B+樹:B樹的擴充,根節點之間有一定鏈接,所有數據最終必須到根節點纔算命中。B樹和B+樹是MySQL等數據庫索引的基礎。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章