1. 程式人生 > 其它 >6、查詢樹與平衡樹

6、查詢樹與平衡樹

查詢樹:又叫做搜尋樹、排序樹,它規定了內部的結構是有規律的。

平衡樹:是查詢樹,且保證左右子樹層數相當。


1、二叉查詢樹

它滿足左子樹小於根,右子樹大於根,且每一個子樹都是二叉查詢樹。

例如:

 對其進行中序遍歷會得到有序集合:

  第一個:2 3 4 6 7 9 13 15 17 18 20

  第二個:1 3 4 6 7 8 10 13 14


2、平衡二叉樹

平衡樹也是查詢樹,是有序的,不過是為了避免查詢樹變成單鏈表,將其左右子樹的深度做以平衡。

一般說平衡二叉樹,指的是使用AVL演算法實現平衡二叉樹。

規定:

  左右子樹高度差不大於1。


3、紅黑樹(平衡二叉樹)

也是一種平衡二叉樹。它給每個節點添加了顏色屬性。

規定:

  1、根節點是黑色。

  2、紅節點的子節點必須為黑色節點。

  3、空節點必須為黑色。

  4、從一個節點到該節點的子孫節點,的所有路徑上包含相同數目的黑節點。

使用:

  Java中的TreeSet、TreeMap。


4、B樹(平衡多叉樹)

它是平衡樹,但是支援多叉,降低樹的深度。

目的:

  為了解決檔案系統的檔案查詢。

 如下圖:

  1、根節點的左子樹P1儲存了小於17的資料。

  2、根節點的中間子樹P2儲存了(17-35)的資料。

  3、根節點的右子樹P3儲存了大於35的資料。


5、B+樹

所有資料都放在底層,上層只存放索引。

 使用:

  資料庫中的索引預設就是使用B+樹實現的。


6、B*樹

在B+樹的基礎上,給非根節點和非葉子節點添加了指向兄弟節點的指標。