1. 程式人生 > 實用技巧 >B樹

B樹

B樹

難點。

回顧:二叉查詢樹(BST)

typedef struct{
    int key;
    struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;

能否變為m叉查詢樹?

五叉查詢樹

struct Node{
    ElemType keys[4]; //最多4個關鍵字
    struct Node *child[5];	//最多5個孩子
    int num;			//結點中有幾個關鍵字
}

最少1個關鍵字,2個分叉

最多4個關鍵字,5個分叉

結點內關鍵字有序

如何查詢

區間裡判斷左邊還是右邊

一開始,9比22小,走22左邊的指標路線

9在下一層的這裡對比,比5大,指標往右移,和11對比,比11小,走11左邊的指標路線

9在第三層這對比,比6大,指標右移,比8大,指標右移,到9相等。找到

一開始,41比22大,走22右邊的指標路線

到下一層,41比36大,指標右移,和45對比,比45小,走45左邊指標路線

到第三次,比40大,指標右移,比42小,走42左邊指標路線,等於null,查詢失敗

每個結點都可以用折半查詢哦

如何保證查詢效率

策略:m叉查詢樹中,規定除了根節點外,任何結點至少有(向上取整m/2個)分叉

,即至少含有有(向上取整m/2 -1)個關鍵字

向上取整!!

例如:5叉排序樹,規定除了根節點外,任何結點都至少有3個分叉,2個關鍵詞

不夠平衡也效率差

策略:m叉查詢樹中,規定對於任何一個結點其所有子樹的高度都要相同

B樹

總結一下:

B樹的高度

知識回顧