1. 程式人生 > >資料結構面試知識點整理

資料結構面試知識點整理

一、連結串列問題面試知識點

二、B樹與B+樹定義

索引是為了查詢資料,而我們已知的比如說二叉查詢樹或者紅黑書可以進行資料查詢,但在大規模資料儲存中,實現索引查詢這樣一個實際背景下,樹節點儲存的元素數量是有限的,這樣導致二叉查詢樹結構由於樹的深度過大而造成磁碟I/O讀寫過於頻繁,進而導致查詢效率低下,那麼如何減少樹的深度,一個基本的想法就是:採用多叉樹結構。多路查詢樹。

1、B樹
B 樹又叫平衡多路查詢樹。一棵m階的B 樹特性如下: 樹中每個結點最多含有m個孩子(m>=2); 除根結點和葉子結點外,其它每個結點至少有[ceil(m / 2)]個孩子(其中ceil(x)是一個取上限的函式);
若根結點不是葉子結點,則至少有2個孩子; 所有葉子結點都出現在同一層,葉子結點不包含任何關鍵字資訊 2、B+樹 B+樹勢應資料庫所需而出現的一種B樹的變形樹。 一顆m階的B+樹需滿足下列條件: 1、每個分支節點最多有m顆子樹(子節點)。 2、非葉子節點至少有兩顆子樹,其他每個分支結點至少有m/2向上取整顆子樹。 3、結點的子樹個數與關鍵字個數相等。 4、所有葉節點包含全部關鍵字及指向相應記錄的指標,而且葉節點中關鍵字按大小順序排列,並且相鄰葉節點按大小順序互相連結起來。 5、所有分支節點(可以看成索引的索引)中僅包含它的各個子節點(即下一級的索引塊)中關鍵字的最大值及指向其子節點的指標
3、B樹和B+樹的差別 1、在B+樹中,具有n個關鍵字的結點只含有n顆子樹,即每個關鍵字對應一顆子樹,而在B樹中,具有n個關鍵字的結點含有n+1顆子樹 2、在B+樹中,每個結點(非根節點)關鍵字個數n的範圍是m/2<=n<=m(根節點:1<=n<=m),zaiB樹中每個結點(非根節點)關鍵字個數n的範圍是m/2-1<=n<=m-1(根節點:1<=n<=m-1) 注:m/2都是向上取整 3、在B+樹中,葉節點包含資訊,所有非葉節點僅僅起到一個索引的作用,非葉節點中的每個索引項只含有對應子樹中最大關鍵子和指向該子樹的指標,不含有該關鍵字對應記錄的儲存地址
4、在B+樹中,葉節點包含了全部關鍵字,即非葉節點中出現的關鍵字也會出現在葉節點中,而在B樹中,葉節點包含的關鍵字和其他節點包含的關鍵字是不重複的